php - 通过 PUT 方法上传 Symfony REST 文件

标签 php rest symfony fosrestbundle

我有一个 REST 服务,我想通过 PUT 更新文件。 当我使用 POST 时,我使用以下方法获取上传的文件:

/**
 * @var Request $request
 */
$request->files->get('file');

如何在 Symfony 框架中将上传的文件作为 PUT 发送?

最佳答案

当您收到 POST 请求时,您会收到一个提交的表单,其中包含一个或多个字段,这些字段包括任何文件(可能不止一个文件)。 Content-Typemultipart/form-data

当您 PUT 文件时,文件的数据请求主体。这就像使用 GET 下载文件相反,文件的内容是响应主体。在这种情况下,如果您通过 PUT 请求接收 JPG 文件,Content-Type 将为 image/jpeg。当然,这意味着您只能通过每个 PUT 请求提交一个文件。

因此,您应该使用 $request->getContent() 来接收数据。如果内容除了提交的文件之外还有其他信息,那么从技术上讲,它是一个格式错误的 PUT 请求,可能应该作为 POST 发送。

虽然您不能通过 PUT 请求发送任何其他字段,但您仍然可以使用查询字符串在适当的地方提供一些额外的短字段。例如,您可以通过 PUT 请求将文件上传到 /api/record/123/attachment?filename=example.pdf。这将允许您接收上传的文件、另一个数据字段(文件名)和要附加上传的记录的 ID (123)。

关于php - 通过 PUT 方法上传 Symfony REST 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24385301/

相关文章:

php - 匹配注册商标符号的正则表达式

web-services - 记录 ServiceStack Web 服务

java - 使用 Maven 的 Tomcat 8 上的 REST Web 服务 404

放心 + 模拟 MVC @ControllerAdvice

security - Symfony2 SonataAdminBundle 密码字段加密

javascript - 使用Ajax进行页面更改,仍然保存输入的数据

php - 星级评分显示不正确

php - 在带有 Windows 7 的 XAMPP 1.8.3 上运行 ImageMagick

php - Twig : url_decode

validation - 如何验证未映射的属性