【问题标题】:Multiple file upload not processing in Laravel 6Laravel 6 中不处理多个文件上传
【发布时间】:2020-05-12 14:52:38
【问题描述】:

我正在使用 Laravel 6 编写 API,但在上传文件时遇到了一些问题,事实上,我根本无法上传任何文件。

我正在使用 Postman 来测试 API。在 params 部分,我输入了一个名称,然后在 body (form-data) 部分,我输入密钥 filename 然后附加一个文件。

当我发送请求时,它返回all good 状态,但它不会上传文件,也不会将详细信息保存到数据库中。

另外,如果我不附加图像文件,验证器会返回所需的状态,但如果我将其更改为 txt 文件,它不会显示任何内容并返回 all good 状态,所以它似乎缺少filename.* 部分,只运行第一个filename 验证。

namespace App\Http\Controllers;

use App\ImageUpload;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Validator;

class ImageUploadController extends Controller
{
    public function store(Request $request): JsonResponse
    {
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'filename' => 'required',
            'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
        ]);

        if ($validator->fails()) {
            return response()->json(['error validation failed'], 400);
        }

        if ($request->hasFile('filename')) {
            foreach ($request->file('filename') as $image) {
                $fileName = time().'.'.$image->getClientOriginalExtension();
                $image->move(public_path() . '/uploads', $fileName);

                $imageUpload = new ImageUpload();
                $imageUpload->name = $request->name;
                $imageUpload->filename = $fileName
                $imageUpload->save();
            }
        }

        return response()->json(['All good'], 200);
    }
}

如果我在最顶部dd($resposne),我试图上传的文件就在那里,见下文;

+files: Symfony\Component\HttpFoundation\FileBag {#59
#parameters: array:1 [
  "filename" => Symfony\Component\HttpFoundation\File\UploadedFile {#44
    -test: false
    -originalName: "23367298-7883819-image-m-101_1578974555854.jpg"
    -mimeType: "image/jpeg"
    -error: 0
    path: "/tmp"
    filename: "phpAJtgNw"
    basename: "phpAJtgNw"
    pathname: "/tmp/phpAJtgNw"
    extension: ""
    realPath: "/tmp/phpAJtgNw"
    aTime: 2020-01-27 08:59:12
    mTime: 2020-01-27 08:59:12
    cTime: 2020-01-27 08:59:12
    inode: 266560
    size: 96981
    perms: 0100600
    owner: 1000
    group: 1000
    type: "file"
    writable: true
    readable: true
    executable: false
    file: true
    dir: false
    link: false
  }
]
}

【问题讨论】:

  • 检查您的$request 是否有多个文件,并以HTML 格式filename[] 作为数组。
  • @Webinion .. 它在那里......我已经用回复更新了我的问题

标签: php laravel


【解决方案1】:
   $validator = Validator::make($request->all(), [
        'name' => 'required',
        'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
    ]);

你的邮递员请求就像

filename[]  (format type = file) = image1.jpg
filename[]  (format type = file) = image2.jpg
filename[]  (format type = file) = image3.jpg

【讨论】:

    猜你喜欢
    • 2021-10-18
    • 2015-07-02
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多