簡體   English   中英

Laravel 6中的多文件上傳器:“必須是Symfony \\ Component \\ HttpFoundation \\ File \\ UploadedFile的實例,已指定數組”

[英]Multiple file uploader in Laravel 6: “must be an instance of Symfony\Component\HttpFoundation\File\UploadedFile, array given”

我有的

我在Laravel 6中創建了一個非常簡單的多圖像上傳器。視圖和控制器的代碼如下:

視圖:

<form action="{{ route('create') }}" method="POST" enctype="multipart/form-data">
    @csrf
    <input name="images[]" type="file" multiple="multiple" />
</form>

控制器:

function create(Request $request) {
    $this->validate($request, [
        'images.*' => 'image',
    ]);

    foreach($request->images as $image) {
        // $filename = 'IMG_1921.jpg'
        $filename = $image->getClientOriginalName();

        // $path = 'uploads/IMG_1921.jpg'
        $path = $image->storeAs('uploads', $filename);

        // $absolutePath = 'C:\htdocs\laravel-test\storage/uploads/IMG_1921.jpg'
        $absolutePath = sprintf('%s/%s', storage_path(), $path);

        // crash here
        // $data = getimagesize($absolutePath); 
    }

    return 'ok';
}

問題

一切正常,直到我取消注釋getimagesize($absolutePath)函數的行。 我也嘗試了filesize($absolutePath)並給出了相同的錯誤:

傳遞給Facade \\ FlareClient \\ Context \\ RequestContext :: Facade \\ FlareClient \\ Context {closure}()的參數1必須是Symfony \\ Component \\ HttpFoundation \\ File \\ UploadedFile的實例,給定數組

我不明白,如果getimagesize()不使用任何UploadedFile對象,為什么會顯示此錯誤。

有關錯誤的更多信息:

在此處輸入圖片說明

我發現了問題:絕對路徑中缺少app文件夾。 應該是C:\\htdocs\\laravel-test\\storage/app/uploads/IMG_1921.jpg而不是C:\\htdocs\\laravel-test\\storage/uploads/IMG_1921.jpg

因此,解決方案是在此處添加/app

$absolutePath = sprintf('%s/app/%s', storage_path(), $path);

嘗試在您的foreach循環中執行此操作:

$data = getimagesize($image->photo->path());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM