Laravel图片上传简单封装及调用方法

浏览1281

Laravel 图片上传简单封装及调用方法,我们在使用框架开发系统,如果经常需要用到图片上传,这时我们就有必要考虑封装了。以下是个简单的封装方法,仅供大家参考。

步骤1:修改文件系统文件配置:位于config/filesystems.php

'Uploads' => [
   'driver' => 'local',
   'root' => public_path('/Uploads'), // public_path 就是public的路径
   'url' => env('APP_URL').'/storage',
   'visibility' => 'public',
   ],

image.png

步骤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,在上传接口方法中传递图片和上传文件夹目录名。


  • 暂无任何回答