用于多文件上传的Laravel-api

问题描述 投票:0回答:3

当我上传时,我想为多个文件上传制作laravel api然后它给出错误$ data是undefined variable.please帮我如何删除这个错误..?

FileUploadController.php

<?php

namespace App\Http\Controllers\API;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use App\Detail;

use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Auth;
class FileUploadController extends Controller
{
    public function uploadFile(Request $request){

        $this->validate($request, [

        'user_sharing_image' => 'required',

        'user_sharing_image.*' => 'mimes:doc,pdf,docx,zip'

        ]);

        if($request->hasfile('user_sharing_image'))

         {
            foreach($request->file('user_sharing_image') as $file)

            {
                $name=$file->getClientOriginalName();

                $file->move(public_path().'/files/', $name);  

                $data[] = $name;  
            }
         }

         $file= new Detail();
         $file->title = $request->title;
         $file->info = $request->info;
         $file->user_id = $request->user()->id;
         $file->user_sharing_image=json_encode($data);

         $file->save();

        return back()->with('success', 'Data Your files has been successfully added');
    }
}

我正在使用laravel passport进行身份验证,并且想要存储user_id但是请不要帮我解决这个问题如何解决这个问题

laravel laravel-5.7
3个回答
0
投票

试试看

$data = [];
if($request->hasfile('user_sharing_image'))
 {
    foreach($request->file('user_sharing_image') as $key=>$file)

    {
        $name=$file->getClientOriginalName();    
        $file->move(public_path().'/files/', $name);      
        $data[$key] = $name;  
    }
 }

 $file= new Detail();
 $file->title = $request->title;
 $file->info = $request->info;
 $file->user_id = Auth::user()->id;
 $file->user_sharing_image=json_encode($data);

 $file->save();

0
投票

您收到此错误,因为未定义$data

foreach循环之前,您可以将其声明为$data = array();


0
投票

我认为你应该使用files方法返回文件数组:

     foreach($request->files('user_sharing_image') as $file)
© www.soinside.com 2019 - 2024. All rights reserved.