【问题标题】:Symfony 4 & Postman access File from post-data POST requestSymfony 4 和 Postman 访问来自 post-data POST 请求的文件
【发布时间】:2018-11-28 17:56:12
【问题描述】:

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

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

在 Postman 上,我在 POST 请求中有以下正文:

form-data 带有key=file 和value=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(),我可以看到文件正在通过,但无法访问它来执行我需要的操作。

我错过了什么吗?

【问题讨论】:

    标签: symfony file-upload postman


    【解决方案1】:

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

    基本上,当我在正文上选择form-data 时,标题选项卡不会自动更新为Content-Type => multipart/form-data,它只是保留它存在的前一个(例如应用程序/json) .

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

    只有在我取消标题上的 Content-Type 时才有效。

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

    所以,

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

    Content-Type = multipart/form-data;边界=----WebKitFormBoundary5Qa5cbeHtIOCMAKa -> 工作正常(你不需要指定这个,因为邮递员会用这个集合发出请求)

    【讨论】:

      【解决方案2】:

      我认为你应该使用$request->files->get('file');

      【讨论】:

      • nop,$request->files 中没有任何内容,正如我上面所说的那样,它是 null
      • 我刚用邮递员 / SF4 试过了,它工作正常,这很奇怪
      • 您在标题选项卡上指定了什么?
      猜你喜欢
      • 2021-08-25
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 2014-11-19
      • 2019-05-06
      • 2019-08-23
      • 2021-01-05
      • 1970-01-01
      相关资源
      最近更新 更多