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 echo()和print()、require()和include()函数区别说明
Mar 27 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
PHP 实现类似js中alert() 提示框
Mar 18 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
PHP如何使用Memcached
Apr 05 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 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面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
PHP文件锁函数flock()详细介绍
2014/11/18 PHP
详解php实现页面静态化原理
2017/06/21 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
canvas实现钟表效果
2017/02/13 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
python中强大的format函数实例详解
2018/12/05 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
学生思想表现的评语
2014/01/30 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
员工升职自我评价
2019/03/26 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
iPhone13再次曝光
2021/04/15 数码科技
vue判断按钮是否可以点击
2022/04/09 Vue.js