首页 > 解决方案 > Symfony 4 和 Postman 访问来自 post-data POST 请求的文件

问题描述

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

但是,我在尝试使用 Postman 读取 Symfony 端的 POST 请求文件参数时遇到问题。

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

key=file带有和的表单数据POST 请求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(),我可以看到文件正在通过,但无法访问它来做我需要的事情。

我错过了什么吗?

标签: symfonyfile-uploadpostman

解决方案


我设法弄清楚了,这与我正在使用的 Postman 应用程序有关。

基本上,当我form-data在 body 上选择时,Headers 选项卡不会自动更新为Content-Type=>之类multipart/form-data的内容,它只会保留它存在的前一个选项卡(例如 application/json)。

当我发现这一点时,我将 Content-Type 更改为multipart/form-data但它仍然无法正常工作。

它仅在我取消标头上的 Content-Type 时才有效。

这是为什么?我错过了boundaryContent-Type 上的部分,当正文是表单数据并且没有生成 Content-Type 标头时,Postman 会自动生成该部分。

所以,

Content-Type = multipart/form-data -> 不起作用

内容类型 =多部分/表单数据;边界=----WebKitFormBoundary5Qa5cbeHtIOCMAKa -> 工作正常(你不需要指定这个,因为邮递员会用这个集合发出请求)


推荐阅读