0

我有的

我在 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对象,我不明白为什么会显示此错误。

有关错误的更多信息:

在此处输入图像描述

4

2 回答 2

1

我发现了问题:app绝对路径中缺少文件夹。它应该C:\htdocs\laravel-test\storage/app/uploads/IMG_1921.jpgC:\htdocs\laravel-test\storage/uploads/IMG_1921.jpg

因此,解决方案是在/app此处添加:

$absolutePath = sprintf('%s/app/%s', storage_path(), $path);
于 2019-09-10T12:30:58.057 回答
0

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

$data = getimagesize($image->photo->path());
于 2019-09-10T12:10:05.520 回答