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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
PHP中遍历stdclass object的实现代码
Jun 09 PHP
通过dbi使用perl连接mysql数据库的方法
Apr 16 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
php有道翻译api调用方法实例
Dec 22 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
通过PHP简单实例介绍文件上传
Dec 16 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 PHP
Laravel框架下的Contracts契约详解
Mar 17 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 删除数组元素
2009/01/16 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
基于angular实现三级联动的生日插件
2017/05/12 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
2018/08/31 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
Python中函数参数调用方式分析
2018/08/09 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
车间工艺员岗位职责
2013/12/09 职场文书
年度考核自我评价
2014/01/25 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
golang为什么要统一错误处理
2022/04/03 Golang
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS