Laravel+Intervention实现上传图片功能示例


Posted in PHP onJuly 09, 2019

本文实例讲述了Laravel+Intervention实现上传图片功能。分享给大家供大家参考,具体如下:

问题

使用Laravel上传图片

解决

安装Intervention

根据这个链接来安装https://packagist.org/packages/intervention/image

使用Intervention

根据这个文档来进行使用http://image.intervention.io/getting_started/introduction

简单修改

使用下面的代码就能实现上传图片

Image::make(Input::file('photo'))->resize(300, 200)->save('foo.jpg');

由于Intervention保存的时候需要指定图片的保存的文件名,所以我写了一个工具类来生成随机文件名。

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/5/2 0002
 * Time: 17:34
 */
namespace App\Libs;
class UploadUtils {
  /**
   * 随机的文件名
   * @param int $len 随机文件名的长度
   * @return str 随机字符串
   */
  private static function randName($len = 10) {
    return substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234565789'), 0, $len);
  }
  /**
   * 创建文件上传到的路径
   * @return str 文件上传的路径
   */
  private static function createDir() {
    $dir = env('UPLOADPATH') . date('Ymd', time());
    if (is_dir($dir) || mkdir($dir, 0777, true)) {
      return $dir;
    }
  }
  /**
   * 获取上传文件的路径
   * @return str 文件的全路径
   */
  public static function getUploadPath($ext = 'jpg') {
    return self::createDir() . '/' . self::randName() . '.' . $ext;
  }
}

上传处理

//上传缩略图
if ($request->hasFile('thumb')) {//存在图片
   $file = $request->file('thumb');
   $path = UploadUtils::getUploadPath($file->guessExtension());//获取保存的文件路径
   Image::make($file)->resize(env('THUMB_WIDTH'), env('THUMB_HEIGHT'))->save($path);//保存
   ...
   #save database
   ...
}

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP字符串处理的10个简单方法
Jun 30 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
php网页病毒清除类
Dec 08 PHP
php+Mysqli利用事务处理转账问题实例
Feb 11 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
基础的WordPress插件制作教程
Nov 24 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 PHP
php多进程应用场景实例详解
Jul 22 PHP
详解阿里云视频直播PHP-SDK接入教程
Jul 09 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 #PHP
Laravel5.1框架注册中间件的三种场景详解
Jul 09 #PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 #PHP
PHP 7.4中使用预加载的方法详解
Jul 08 #PHP
php apache开启跨域模式过程详解
Jul 08 #PHP
php如何把表单内容提交到数据库
Jul 08 #PHP
php利用array_search与array_column实现二维数组查找
Jul 08 #PHP
You might like
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
phpStorm2020 注册码
2020/09/17 PHP
js select常用操作控制代码
2010/03/16 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
Node.js学习入门
2017/01/03 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
python实现udp传输图片功能
2020/03/20 Python
Python中logger日志模块详解
2020/08/04 Python
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
法雷奥SQA(electric)面试问题
2016/01/23 面试题
英文求职信结束语大全
2013/10/26 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
领导失职检讨书
2014/02/24 职场文书
工程师岗位职责规定
2014/02/26 职场文书
我爱我家教学反思
2014/05/01 职场文书