ThinkPHP5.0 图片上传生成缩略图实例代码说明
发布:smiling 来源: PHP粉丝网 添加日期:2021-10-05 11:58:44 浏览: 评论:0
这篇文章主要介绍了ThinkPHP5.0 图片上传生成缩略图实例代码说明,需要的朋友可以参考下。
很多朋友遇到这样一个问题,图片上传生成缩略图,很多人在本机(win)测试成功,上传到linux 服务器后错误。
我也遇到同样的问题,网上一查,有无数的人说是服务器临时文件目录权限问题。
几经思考后,发现并非如此。
其根本的原因是,保存到变量的信息是之前的,之后又move移动到了自己指定的目录下,同时临时文件已经不存在。所以再生成缩略图的时候,需要open的,文件地址应该是自己定义的目录+文件名。然而很多实例文档中,还是使用的move 之前的信息。
又加之在win服务器下,move后,指定目录已生成了文件,同时临时文件未被删除。所以能用move之前的信息生成缩略图。
希望不多的言语能帮助遇到同样问题的你。
下面在通过实例代码给大家介绍ThinkPHP5.0 图片上传生成缩略图的方法。
代码如下所示:
- <?php
- 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;
- }
- }
Tags: ThinkPHP5 0图片上传
相关文章
- ·ThinkPHP5.0版本和ThinkPHP3.2版本的区别(2018-11-02)
- ·thinkphp5的get和post数据封装的方法介绍(代码)(2019-12-25)
- ·thinkPHP5运行在nginx上的配置方法详解(2020-03-22)
- ·巧用ThinkPHP5.1和 tufanbarisyildirim 快速解析apk(2020-03-22)
- ·thinkPHP5实现的查询数据库并返回json数据实例(2021-08-15)
- ·thinkPHP5(TP5)实现改写跳转提示页面的方法(2021-08-16)
- ·ThinkPHP5邮件发送服务封装(可发附件)(2021-08-17)
- ·thinkPHP5 ajax提交表单操作实例分析(2021-08-17)
- ·ThinkPHP5联合(关联)查询、多条件查询与聚合查询实例详解(2021-08-17)
- ·ThinkPHP5查询数据及处理结果的方法小结(2021-08-17)
- ·thinkPHP5框架整合plupload实现图片批量上传功能的方法(2021-08-18)
- ·thinkPHP5框架渲染模板的3种方式简述(2021-08-18)
- ·Thinkphp5 微信公众号token验证不成功的原因及解决方法(2021-08-19)
- ·学习thinkphp5.0验证类使用方法(2021-08-19)
- ·thinkphp5.0自定义验证规则使用方法(2021-08-20)
- ·在云虚拟主机部署thinkphp5项目的步骤详解(2021-08-23)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)