本文实例讲述了Laravel+Intervention实现上传图片功能。分享给大家供大家参考,具体如下:
问题
使用Laravel上传图片
解决
安装Intervention
根据这个链接来安装https://packagist.org/packages/intervention/image
使用Intervention
根据这个文档来进行使用http://image.intervention.io/getting_started/introduction
简单修改
使用下面的代码就能实现上传图片
1
|
Image::make(Input::file( 'photo' ))->resize(300, 200)->save( 'foo.jpg' ); |
由于Intervention保存的时候需要指定图片的保存的文件名,所以我写了一个工具类来生成随机文件名。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
<?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 ; } } |
上传处理
1
2
3
4
5
6
7
8
9
|
//上传缩略图 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程序设计有所帮助。
原文链接:https://blog.csdn.net/baochao95/article/details/72582298