【发布时间】:2019-09-25 13:42:30
【问题描述】:
我正在使用 Symfony 4 构建一个没有 API 包的 API。我正在手动创建所有端点,一切正常。 我的问题是当我尝试上传多个文件时。 我有一个带有字段图片的实体,我需要用户上传多个文件。 问题是我无法获取文件,我只收到一个文件。
这是我实体上的字段,是数组类型,我不知道这是否是最佳实践:
/**
* @ORM\Column(type="array")
* @OA\Property(type="array")
* @Groups("main")
*/
private $pictures = [];
在我的控制器中,我试图计算文件(仅用于测试),但我总是有 1 个文件:
$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/
添加
我也尝试过使用 Postman,结果相同。这是我的第一个 API,我有点迷路了! 我尝试了很多东西,一切都失败了:(
谁能给我一个线索以找到解决方案?
谢谢!!
【问题讨论】:
-
php 的设计是,如果您的请求有多个分配 x='something' 和 x='else' 它最终将是 x='else' 而不是 x=['something', '别的']。这同样适用于文件。这是第 1 部分(答案是,它必须是
pictures[]=...,可能已经逃脱,我不记得了……)如果仍然没有帮助,请查看 php.net/manual/en/features.file-upload.php 并仔细阅读。 -
好吧,感谢您的回复,如果我将 [] 添加到我的 curl 中,这是可行的,但我不知道为什么这在 Postman 中不起作用。我虽然邮递员可以处理这种事情:D
标签: api symfony multiple-file-upload