ThinkPHP5.0 图片上传生成缩略图实例代码说明
很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux服务器后错误。
我也遇到同样的问题。网上一查,有无数的人说是服务器临时文件目录权限问题。
几经思考后,发现并非如此。
其根本的原因是,保存到变量的信息是之前的,之后又move移动到了自己指定的目录下,同时临时文件已经不存在。所以再生成缩略图的时候,需要open的,文件地址应该是自己定义的目录+文件名。然而很多实例文档中,还是使用的move之前的信息。
又加之在win服务器下,move后,指定目录已生成了文件,同时临时文件未被删除。所以能用move之前的信息生成缩略图。
希望不多的言语能帮助遇到同样问题的你。
下面在通过实例代码给大家介绍ThinkPHP5.0图片上传生成缩略图的方法。
代码如下所示:
thumb($width,$height,\think\Image::THUMB_FIXED)->save($thumbName); $data=[ 'access_url'=>$imgRootPath.'/'.$whereName.'/'.$filename.'.'.$type, 'filename'=>$thumbfile, ]; return$data; } } }
调用:
classGoods
{
publicfunctionupload_sku()
{
$whereName='goods/sku';
$width=750;
$height=750;
$data=Tools::upload_goods_img($whereName,$width,$height);
returnreturnJson(1,'上传成功',$data);;
}
}
PS:下面在看一段代码tp5中上传图片方法,并生成相应缩略图的方法
//接收上传文件的name
$file=$this->_req->file("upload_head_image");
//将上传的文件移动到public/uploads/user
$info=$file->validate(['size'=>5242880,'ext'=>'jpg,jpeg,png'])->move(ROOT_PATH.'public'.DS.'uploads'.DS.'user');
if($info){
$pic=new\app\home\model\User();
$pic_url=$pic->thumbImage($file,$info);
$user['portrait']='uploads/user/'.$pic_url;
//print_r($pic_url);exit();
}
///model中代码如下
/**
*[生成用户头像缩略图,180、50]
*@param[type]$file[获取上传文件$_FILE]
*@param[type]$pic[上传文件的路径]
*@return[type][返回处理后的文件路径]
*/
publicfunctionthumbImage($file,$pic){
$image=\think\Image::open($file);
$getSaveName=str_replace('\\','/',$pic->getSaveName());
$portrait_thumbnail_180='uploads/user/'.str_replace($pic->getFilename(),'180_'.$pic->getFilename(),$getSaveName);
$image->thumb(180,180,\think\Image::THUMB_CENTER)->save(ROOT_PATH.'public'.DS.$portrait_thumbnail_180,null,100,true);
$portrait_thumbnail_80='uploads/user/'.str_replace($pic->getFilename(),'80_'.$pic->getFilename(),$getSaveName);
$image->thumb(80,80,\think\Image::THUMB_CENTER)->save(ROOT_PATH.'public'.DS.$portrait_thumbnail_80,null,100,true);
$portrait_thumbnail_50='uploads/user/'.str_replace($pic->getFilename(),'50_'.$pic->getFilename(),$getSaveName);
$image->thumb(50,50,\think\Image::THUMB_CENTER)->save(ROOT_PATH.'public'.DS.$portrait_thumbnail_50,null,100,true);
if($image){
return$getSaveName;
}
}
总结
以上所述是小编给大家介绍的ThinkPHP5.0图片上传生成缩略图实例代码说明,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!