【问题标题】:Get collection or array of uploaded files获取上传文件的集合或数组
【发布时间】:2021-12-07 01:04:42
【问题描述】:

我对表单数据有疑问。我在一个数组中有很多文件,但是当我必须在我的控制器中获取它们时,我使用 file() 但它不会返回上传文件的集合,所以我正在寻找一种解决方案来实现它。我的客户是 Anguler,我的 API 是 Laravel。

所以当我发送我的请求时,我会得到我的文件:

 (2) [File, File]

但是我不知道如何创建一个集合,所以我被这段代码困住了,它只给了我一个文件。当我dd() 我只得到一个文件。

 $files= $req->file('files');

我想做这个:

$files->each(function ($item, $key) {
    //some code...
});

编辑 我更改了客户端的逻辑以创建许多具有不同键名的文件,以便在获取请求内容后循环。

for (var i = 0; i < email.file.length; i++) {
      form.append('file'+[i], email.file[i], email.file[i].name);
    }

现在我有:

#parameters: array:2 [▼
    "file0" => Symfony\Component\HttpFoundation\File\UploadedFile {#33 ▶}
    "file1" => Symfony\Component\HttpFoundation\File\UploadedFile {#34 ▶}
  ]

所以我得到一个对象,我想将它转换为数组或集合。

【问题讨论】:

  • 你可以通过$request->files访问文件,然后你可以使用foreach访问每个文件
  • 看来$req->files不是集合也不是数组。
  • 可以显示相关的客户端代码吗?
  • 在客户端我这样做了:` for (let key in imagedata.files) { formData.append("images[]", imagedata.files[key]); } ` 现在我可以通过控制器中的 $request->images 将图像作为数组访问,如果你想将数组转为集合,可以使用 col() 方法
  • 我在 dd() 中得到一个数组数组,但 gettype() 返回一个对象。

标签: laravel collections multipartform-data


【解决方案1】:

我替换了这个:

$files= $req->file('files');

到:

$req->files->all();

感谢this doc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多