@greensea
2015-08-11T07:43:18.000000Z
字数 1506
阅读 1411
图片上传类被封装成了一个名为 upimg 的 Extend,上传图片会保存在 /static/image/user
目录下。
示例代码:
在表单域中,使用 image 作为 file 域名字
<input type="file" name="image" />
在 PHP 中使用下面的代码进行处理:
$upimgExtend = importExtend('Upimg');
/// 保存上传的图片,并更新数据库,如果成功,则在返回该图片在数据库中的唯一编号
$ret = $upimgExtend->save('image');
if (!$ret) {
die('无法上传文件:' . $upimgExtend->getLastError());
}
/// 图片上传成功,使用图片编号查询图片详细信息
$cond = array(
'upimg_id' => $ret
);
$upimg = $upimgExtend->getBy($cond);
$upimg = $upimgExtend->format($upimg);
echo json_encode($upimg);
在上面的代码中,$upimg 的内容是:
{
"upimg_id": "87",
"user_id": "0",
"admin_id": "2",
"ctime": "1439277423",
"local_name": "截图_2015-05-26_14-23-33.png",
"ip": "127.0.0.1",
"group_id": "0",
"hash": "5f72d8cb13bafb80e52e58fcd20b4d8b",
"ext": "png",
"url_upyun": "//youxia-cdn.b0.upaiyun.com/user/5f/72/5f72d8cb13bafb80e52e58fcd20b4d8b.png",
"url": "//youxia-cdn.b0.upaiyun.com/user/5f/72/5f72d8cb13bafb80e52e58fcd20b4d8b.png"
}
我们可以直接使用其中的 url_upyun 字段来作为图片路径。
另外,可以根据实际需要,保存 upimg_id。比如,我们需要保存用户头像,那么可以在用户表中创建一个名为 userface_id 的字段,将 upimg_id 的值保存到 userface_id 字段中。在读取用户信息时,可以根据 userface_id 查询到对应的图像文件。
在 upyun 的 URL 后面加上 !WxH 就可以生成缩略图,如这张图片:
https://youxia-cdn.b0.upaiyun.com/user/7a/32/d155be2809d353fd7f63a71dbcbe.jpg
原始大小是 600x450,如果我们需要一个 100x100 的缩略图,可以将地址写成这样:
https://youxia-cdn.b0.upaiyun.com/user/7a/32/d155be2809d353fd7f63a71dbcbe.jpg!100x100
如果我们只想确保宽度为 100,并保持图像比例,则可以将宽度设为 100,同时将高度设为 0,如:
https://youxia-cdn.b0.upaiyun.com/user/7a/32/d155be2809d353fd7f63a71dbcbe.jpg!100x0
同样,如果将宽度设置为 0,就可以生成一个固定高度,但宽度自适应的比例不变的缩略图。
需要注意的是,自动缩略图功能其实是我们自己实现的,而不是 upyun 提供的功能。也就是说,每生成一个缩略图,都会占用我们自己的服务器空间,所以请不要生成大量的不同大小的缩略图。