Symfony 4和邮递员从后数据POST请求访问文件

时间:2018-06-19 17:32:53

标签: symfony file-upload postman

我正在尝试使用Symfony REST API上传图像。

但是,在尝试使用邮递员读取Symfony一侧的POST请求文件参数时遇到问题。

在邮递员上,我在POST请求中具有以下正文:

表单数据具有key=filevalue=some image

的POST请求

当请求到达Symfony时,我将看到以下内容:

public function uploadImage(Request $request)
{
    $params = $request->request;

    $file = $params->get('image');
    dump($file);

    ...
}

file变量是null。我也尝试过使用$params = $request->files,但结果是相同的。

如果我转储$request->getContent(),我可以看到文件正在传递,但是无法访问该文件以执行我需要的操作。

我想念什么吗?

2 个答案:

答案 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会使用此设置进行请求)