Laravel 图片上传简单封装及调用方法,我们在使用框架开发系统,如果经常需要用到图片上传,这时我们就有必要考虑封装了。以下是个简单的封装方法,仅供大家参考。
步骤1:修改文件系统文件配置:位于config/filesystems.php
'Uploads' => [
'driver' => 'local',
'root' => public_path('/Uploads'), // public_path 就是public的路径
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
步骤2:创建 Upload.php 位于 app\TraitClass\Upload.php
<?php
/**
* Created by PhpStorm.
* User: Admin
* Date: 2020/7/17
* Time: 17:15
* 文件上传封装
*/
namespace App\TraitClass;
use Illuminate\Support\Facades\Storage;
trait Upload
{
/*
* 图片上传接口
* 文件名
* 文件夹名
* */
public function uploadImg($file,$folder){
$tmp = $file;
$folder=$folder ? $folder : "";
$path = '/Uploads'; //public下的Uploads
if ($tmp->isValid()) { //判断文件上传是否有效
$FileType = $tmp->getClientOriginalExtension(); //获取文件后缀
$FilePath = $tmp->getRealPath(); //获取文件临时存放位置
$FileName = $folder.'/'.date('Y-m-d') . uniqid() . '.' . $FileType; //定义文件名
Storage::disk('Uploads')->put($FileName, file_get_contents($FilePath)); //存储文件
return $data = [
'status' => 0,
'path' => $path . '/' . $FileName //文件路径
];
}
}
}步骤2:使用及调用方法
<?php
use App\TraitClass\Upload;
class ArticleController extends Controller
{
use Upload;
/*
* ico图片上传接口
* */
public function ico(Request $request){
if($request->isMethod('post')){
$img=$request->img;
$res=$this->uploadImg($img,'img');
return $res;
}
}
}
?>结语:这里通过 use App\TraitClass\Upload 引入Upload.php,在上传接口方法中传递图片和上传文件夹目录名。