首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 4- API管理多个文件上传(没有包)

Symfony 4- API管理多个文件上传(没有包)
EN

Stack Overflow用户
提问于 2019-09-25 13:42:30
回答 1查看 548关注 0票数 0

我正在使用Symfony 4构建一个没有API包的API。我正在创建我所有的端点,一切都很好。我的问题是当我试图上传多个文件时。我有一个实体与现场图片,我需要用户上传多个文件。问题是我不能得到文件,我只收到一个文件。

这里是我的实体上的字段,是一个数组类型,我不知道这是否是最好的方法:

代码语言:javascript
复制
/**
 * @ORM\Column(type="array")
 * @OA\Property(type="array")
 * @Groups("main")
 */
private $pictures = [];

在我的控制器中,我试图计数文件(只是为了测试),但是我总是有一个文件:

代码语言:javascript
复制
$files = $request->files;
    return $this->json(count($files)); // result 1

卷曲是用来得到这个结果的:

代码语言:javascript
复制
curl -H "Authorization: Bearer MY_TOKEN" -F "pictures=@PATH_TO_FILE\4b737fac533294776e386a3469e84e16.png" -F "pictures=@PATH_TO_FILE\azekh1454621e54516ze321a511z6259.png" http://127.0.0.1:8000/api/incidents/

添加

我也和邮递员试过了,结果一样。这是我的第一个API,我有点迷路了!我试了很多次,一切都失败了。

谁能给我一个找到解决办法的线索吗?

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-25 16:24:15

与提供的任何其他请求参数一样,完全相同参数的多个实例通常相互覆盖:

https://example.org/?param=1&param=2

会变成

代码语言:javascript
复制
['param' => 2] // in $_REQUEST or whatever

因此,用pictures=...发送两个文件将遭受相同的命运。

为了解决这个问题,php理解[]语法:

https://example.org/?param[]=1&param[]=2

会变成

代码语言:javascript
复制
['param' => [1,2]] 

因此,对于curl来说,将pictures=...转换为pictures[]=...就足够了。

文件可以以不同的方式传输。例如,PHP有几个缺陷,即它只接受作为multipart/form-data (来源)发送的文件,这会导致邮递员问题,在默认情况下,这个问题会以不同的方式发送文件,您必须以不同的方式设置它,有关提示,请参见下面的问题:

通过HTTP与邮递员上传图像

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58099813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档