Php Symfony REST文件上传over-PUT方法

Php Symfony REST文件上传over-PUT方法,php,rest,symfony,fosrestbundle,Php,Rest,Symfony,Fosrestbundle,我有一个REST服务,我想更新一个文件。 当我使用POST时,我使用以下内容来获取上传的文件: /** * @var Request $request */ $request->files->get('file'); 如何在Symfony Framework中发送上传的文件?当您收到POST请求时,您会收到一个包含一个或多个字段的表单,这些字段包括任何文件(可能不止一个文件)。内容类型是多部分/表单数据 放置文件时,文件的数据是请求主体。这与使用GET下载文件相反,其中文件的内

我有一个REST服务,我想更新一个文件。 当我使用POST时,我使用以下内容来获取上传的文件:

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

如何在Symfony Framework中发送上传的文件?

当您收到POST请求时,您会收到一个包含一个或多个字段的表单,这些字段包括任何文件(可能不止一个文件)。
内容类型
多部分/表单数据

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

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


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

最简单的方法是,在不需要更改api的情况下,将文件和要更改的数据提交为方法
POST
,并向url添加查询参数
?\u method=PUT
。在前端控制器中,需要通过以下方式启用此功能:

Request::enableHttpMethodParameterOverride();

您是否使用特定的REST捆绑包?好吧,糟糕,我没有看到FOSRestBundle标签。我写了一个上传图像的程序,但是对于一个文件来说,它的逻辑可能是相同的。我做了测试,但是在
$request->getContent()
中,更多的是因为文件的内容还有一些标题信息,然后上传的图像被破坏了。我正在寻找一个正确的答案,如何处理这个问题。实际上,我可以通过以下方式读取文件:
var\u dump(file\u get\u contents('php://input)
但我无法将其转换为适当的
Symfony\Component\HttpFoundation\File\File
类。这就是我真正想要实现的。有什么新想法吗?将内容保存到一个tmp文件中,例如使用tempnam并创建一个新文件($path)Symfony文件基于SplFileInfo