![](/img/trans.png)
[英]Catchable Fatal Error: Argument 1 passed to \Entity\Image::setFile() must be an instance of 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.