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来处理多个提交任务
Oct 09 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
删除数组元素实用的PHP数组函数
Aug 18 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
Jan 10 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 PHP
PHP实现一个限制实例化次数的类示例
Sep 16 PHP
如何在PHP中生成随机数
Jun 04 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中文转拼音的实现代码
2014/02/11 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
初识javascript 文档碎片
2010/07/13 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
js实现上传图片之上传前预览图片
2013/03/25 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
Python流程控制 while循环实现解析
2019/09/02 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Python底层封装实现方法详解
2020/01/22 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
Django配置跨域并开发测试接口
2020/11/04 Python
Python用Jira库来操作Jira
2020/12/28 Python
PHP开发的一般流程
2013/08/13 面试题
Shell如何接收变量输入
2016/08/06 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
新学期开学寄语
2014/01/18 职场文书
教研活动总结
2014/04/28 职场文书
环保建议书300字
2014/05/14 职场文书
篮球拉拉队口号
2015/12/25 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android