php tp5上传图片视图层,ThinkPHP5.0 图片上传生成缩略图实例代码说明

很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误。

我也遇到同样的问题。网上一查,有无数的人说是服务器临时文件目录权限问题。

几经思考后,发现并非如此。

其根本的原因是,保存到变量的信息是之前的,之后又move移动到了自己指定的目录下,同时临时文件已经不存在。所以再生成缩略图的时候,需要open的,文件地址应该是自己定义的目录+文件名。然而很多实例文档中,还是使用的move 之前的信息。

又加之在win服务器下,move后,指定目录已生成了文件,同时临时文件未被删除。所以能用move之前的信息生成缩略图。

希望不多的言语能帮助遇到同样问题的你。

下面在通过实例代码给大家介绍ThinkPHP5.0 图片上传生成缩略图的方法。

代码如下所示:

namespace app\common\controller;

use app\common\model\Goods;

class Tools

{

public static function upload_goods_img($whereName="", $width="", $height="")

{

// 打开图片的相对路径

$imgpath = config('img_path');

// 绝对路径

$imgRootPath = config('imgRootPath');

$storeId = '自定义';

$merchantId = '自定义';

$old_filename = $storeId . $merchantId . time();

$filename = $storeId . $merchantId . time() . mt_rand(1000, 9999);

$type = Goods::upload($whereName, $old_filename);

if($type)

{

$savepath = $imgRootPath . '/' . $whereName . '/' . $filename . '.' . $type;

$thumbfile = $filename . '.' . $type;

$thumbName = $imgpath . '/' . $whereName . '/' . $thumbfile;

$image = \think\Image::open($imgpath . '/'. $whereName .'/' . $old_filename . '.' . $type);

$image->thumb($width, $height, \think\Image::THUMB_FIXED)->save($thumbName);

$data = [

'access_url' => $imgRootPath . '/' . $whereName . '/' . $filename . '.' . $type,

'filename' => $thumbfile,

];

return $data;

}

}

}

调用:

class Goods

{

public function upload_sku()

{

$whereName = 'goods/sku';

$width = 750;

$height = 750;

$data = Tools::upload_goods_img($whereName,$width, $height);

return returnJson(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] [返回处理后的文件路径]

*/

public function thumbImage($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 图片上传生成缩略图实例代码说明,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值