【问题标题】:Multiple file uploader in Laravel 6: "must be an instance of Symfony\Component\HttpFoundation\File\UploadedFile, array given"Laravel 6 中的多文件上传器:“必须是 Symfony\Component\HttpFoundation\File\UploadedFile 的实例,给定数组”
【发布时间】:2019-09-10 11:07:16
【问题描述】:

我有什么

我在 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) 并给出了同样的错误:

参数 1 传递给 Facade\FlareClient\Context\RequestContext::Facade\FlareClient\Context{closure}() 必须是 Symfony\Component\HttpFoundation\File\UploadedFile,给定数组

如果getimagesize() 不使用任何UploadedFile 对象,我不明白为什么会显示此错误。

有关错误的更多信息:

【问题讨论】:

  • 尝试dd($absolutePath)并评论结果
  • dd($absolutePath) 返回"C:\htdocs\laravel-test\storage/uploads/IMG_1921.jpg"gettype($absolutePath) 返回string

标签: php laravel file-upload laravel-6


【解决方案1】:

我发现了问题:绝对路径中缺少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);

【讨论】:

    【解决方案2】:

    尝试在您的 foreach 循环中执行此操作:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      相关资源
      最近更新 更多