如何在没有表单的情况下上传文件

Tjo*_*rie 33 forms upload symfony

我的控制器收到帖子数据.它不是来自Symfony生成的表单,而是来自AngularJS自定义表单FormData.

正常参数通常在请求参数包中接收,但如何获取上传的文件?我需要手动执行与表单相同的handleRequest操作吗?

我的文档与食谱文章相同.

所以我需要从post请求中获取UploadFile以在文档实体上调用此方法:

public function setFile(UploadedFile $file = null)

如何在Symfony 2中手动上传(不以任何方式使用表单构建器)?

Tjo*_*rie 63

请求有FileBag,类似于ParameterBag

所以我可以轻松地获取指定的文件:

$data = $this->getRequest()->request->all();
$file = $this->getRequest()->files->get('file');
Run Code Online (Sandbox Code Playgroud)

并使用菜谱中的文件:

$document = new Document();
$document->setFile($file);
$lead->setDocument($document);
Run Code Online (Sandbox Code Playgroud)

  • `$ this-> getRequest()`似乎从2.4开始被弃用,并在3.0中删除.`$ request-> files-> get('filename')`为我工作 (5认同)
  • 还要检查 PHP 是否接受文件。这里有一些 `php.ini` 指令 https://www.php.net/manual/en/ini.core.php#ini.sect.file-uploads 例如必须设置为 on 的 `file_uploads` ,或 `upload_max_filesize` 等。 (2认同)