我正在尝试使用Symfony REST API上传图像。
但是,在尝试使用邮递员读取Symfony一侧的POST请求文件参数时遇到问题。
在邮递员上,我在POST请求中具有以下正文:
表单数据具有key=file
和value=some image
当请求到达Symfony时,我将看到以下内容:
public function uploadImage(Request $request)
{
$params = $request->request;
$file = $params->get('image');
dump($file);
...
}
file
变量是null
。我也尝试过使用$params = $request->files
,但结果是相同的。
如果我转储$request->getContent()
,我可以看到文件正在传递,但是无法访问该文件以执行我需要的操作。
我想念什么吗?
答案 0 :(得分:0)
我认为您应该使用$request->files->get('file');
答案 1 :(得分:0)
我设法弄清楚了,这与我使用的Postman应用有关。
基本上,当我在正文上选择form-data
时,“标题”选项卡不会自动更新为类似Content-Type
=> multipart/form-data
之类的东西,它只会保留它存在的前一个(应用程序/ json)。
当我发现这一点时,我将Content-Type更改为 multipart / form-data ,但仍然无法正常工作。
仅当我取消标题上的Content-Type时,它才起作用。
那是为什么?
我缺少Content-Type上的boundary
部分,当正文是表单数据且没有Content-Type标头生成时,邮递员会自动生成该部分。
所以
Content-Type = 多部分/表单数据->不起作用
Content-Type = 多部分/表单数据; boundary = ---- WebKitFormBoundary5Qa5cbeHtIOCMAKa ->可以正常工作(您无需指定此地址,因为Postman会使用此设置进行请求)