laravel框架多文件上传

Posted Zion0707

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel框架多文件上传相关的知识,希望对你有一定的参考价值。

1、首先先在laravel根目录下执行 $ php artisan storage:link ,产生映射文件 

 

2、编写controller层

// 文件上传
    public function upload(Request $request){
        // 判断是否有上传文件字段
        if ( $request->file() ){
            //定义一个空数组存放文件列表
            $files = []; 
            // 循环获取所有文件字段
            foreach ($request->allFiles() as $file){
                // 定义一个空数组,方便与储存其它字段
                $obj = [];
                //将图片存储到了 ../storage/app/public/product/ 路径下
                $path = $file->store(\'public/product/\'.date(\'Y-m-d\'));
                $path = str_replace(\'public\',\'\',$path);
                $obj[\'url\']= asset(\'storage\'.$path);
                // 赋值给对象
                $files[] = $obj;
            }
            return $this->responseMsg( 0, \'success\', $files);
        }else{
            return $this->responseMsg( -2, \'请上传文件\', null);
        }
    }

    // 通用的返回格式 
    public function responseMsg($code, $msg, $data){
        return response()->json([
            \'code\' => $code, // 0:成功,-1:未登录,-2:错误
            \'msg\'  => $msg,
            \'data\' => $data 
        ]);
    }

  

 3、编写路由

// 文件上传
Route::post(\'upload\', \'UtilsController@upload\');

 

4、用 postman 模拟请求,注意红框部分,必须要两个不一样的字段才能产生两个文件

 

 

 

5、查看 ./storage/app/public/ 文件夹

 

6、 前端代码实现,使用框架为 axios

var formData = new FormData()
                for (let i = 0; i < _self.previewUrl.length; i++) {
                    // _self.previewUrl 为一个数组,格式:[{file: FileObject}],file字段的值为单个文件的对象
                    formData.append(\'file\'+i, _self.previewUrl[i].file);
                }
                this.axios.post(\'/upload\', formData, {
                    headers:{
                        "Content-Type":"multipart/form-data"
                    }
                }).then((res)=>{
                    console.log(res.data);
                });

 

以上是关于laravel框架多文件上传的主要内容,如果未能解决你的问题,请参考以下文章

Laravel5多图上传和Laravel5单图上传的功能实现

laravel框架用request:file接不到文件怎么解决

如何使用 laravel 4 框架创建文本文件和 JSON?

Laravel项目Linux服务器部署

BlueImp 文件上传“错误:方法不允许” - Laravel 4 路由问题

将非框架 PHP 项目移植到 Laravel 4.x