我正在使用Symfony 4构建一个没有API包的API。我正在创建我所有的端点,一切都很好。我的问题是当我试图上传多个文件时。我有一个实体与现场图片,我需要用户上传多个文件。问题是我不能得到文件,我只收到一个文件。
这里是我的实体上的字段,是一个数组类型,我不知道这是否是最好的方法:
/**
* @ORM\Column(type="array")
* @OA\Property(type="array")
* @Groups("main")
*/
private $pictures = [];在我的控制器中,我试图计数文件(只是为了测试),但是我总是有一个文件:
$files = $request->files;
return $this->json(count($files)); // result 1卷曲是用来得到这个结果的:
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,我有点迷路了!我试了很多次,一切都失败了。
谁能给我一个找到解决办法的线索吗?
谢谢!!
发布于 2019-09-25 16:24:15
与提供的任何其他请求参数一样,完全相同参数的多个实例通常相互覆盖:
https://example.org/?param=1¶m=2
会变成
['param' => 2] // in $_REQUEST or whatever因此,用pictures=...发送两个文件将遭受相同的命运。
为了解决这个问题,php理解[]语法:
https://example.org/?param[]=1¶m[]=2
会变成
['param' => [1,2]] 因此,对于curl来说,将pictures=...转换为pictures[]=...就足够了。
文件可以以不同的方式传输。例如,PHP有几个缺陷,即它只接受作为multipart/form-data (来源)发送的文件,这会导致邮递员问题,在默认情况下,这个问题会以不同的方式发送文件,您必须以不同的方式设置它,有关提示,请参见下面的问题:
https://stackoverflow.com/questions/58099813
复制相似问题