使用 symfony2 从 post Multipart (Content-Disposition: form-data) 获取数据

Posted

技术标签:

【中文标题】使用 symfony2 从 post Multipart (Content-Disposition: form-data) 获取数据【英文标题】:Get Datas from post Multipart (Content-Disposition: form-data) with symfony2 【发布时间】:2015-10-18 15:40:46 【问题描述】:

使用 AngularJS,我在一个请求中发布表单数据和文件。我无法在 symfony2 的控制器中正确处理数据。

我只得到$request->getContent() 的完整数据字符串,但它没有被解析。

这里有更多细节:

1 - 我像这个例子一样发送数据并且它有效 => http://shazwazza.com/post/Uploading-files-and-JSON-data-in-the-same-request-with-Angular-JS

2 - 这是发送的数据:

-----------------------------23743060120122
Content-Disposition: form-data; name="model"

"type_inventaire_id":"8","profondeur_id":"2","code_pays_elv":"FR"
-----------------------------23743060120122
Content-Disposition: form-data; name="file"; filename="importChep.txt"
Content-Type: text/plain

69182002
22096034
22096033
00110011
//69182007
69182003

-----------------------------23743060120122

3 - 我只能用$request->getContent() 获取数据,但它没有被解析 我想得到它:

$file = $request->files->get('file');
$model = $request->get('model');

我寻找了一天的解决方案,但我没有找到任何东西......

有人有想法吗?

【问题讨论】:

【参考方案1】:

您是在执行 POST 还是 PUT 请求?我发现当使用 PUT 方法时,symfony 不会让您访问属性,但是使用 POST 您应该能够访问您的数据:

$file = $request->files->get('file');
$model = $request->request->get('model');

【讨论】:

这是一个 POST 请求。我认为这是 MULTIPART 的问题。 你找到解决方案了吗?

以上是关于使用 symfony2 从 post Multipart (Content-Disposition: form-data) 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

从 $_POST 请求(不是来自 URL)使用 ParamConverter

Symfony2.8。如何从发布请求中获取数据

Symfony2:KnpPaginator 仅显示带有 POST 表单的第一页

当文件大于 post_max_size 时 Symfony2 验证器不工作

访问 Symfony2 请求对象中的 POST 值

symfony2 symofny3中得到get post session cookies的方法