我有一个 REST 服务,我想通过 PUT 更新文件。 当我使用 POST 时,我使用以下方法获取上传的文件:
/**
* @var Request $request
*/
$request->files->get('file');
如何在 Symfony 框架中将上传的文件作为 PUT 发送?
最佳答案
当您收到 POST 请求时,您会收到一个提交的表单,其中包含一个或多个字段,这些字段包括任何文件(可能不止一个文件)。 Content-Type
是 multipart/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/