本文实例讲述了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