如何在没有表单的情况下获取文件上传
Posted
技术标签:
【中文标题】如何在没有表单的情况下获取文件上传【英文标题】:How to get file upload without a form 【发布时间】:2013-08-26 08:25:09 【问题描述】:我的控制器接收到发布数据。它不是来自 Symfony 生成的表单,而是来自使用 FormData
的 AngularJS 自定义表单。
请求参数包中正常接收正常参数,但是如何获取上传的文件?我是否需要手动执行与表单的 handleRequest
相同的操作?
我的文档和cookbook article一样。
所以我需要从 post 请求中获取一个 UploadFile 以在文档实体上调用此方法:
public function setFile(UploadedFile $file = null)
如何在 Symfony 2 中手动接收上传(不以任何方式使用表单构建器)?
【问题讨论】:
【参考方案1】:Request 有一个 FileBag,类似于 ParameterBag
所以我可以很容易地得到指定的文件:
$data = $this->getRequest()->request->all();
$file = $this->getRequest()->files->get('file');
并按原样使用食谱中的文档:
$document = new Document();
$document->setFile($file);
$lead->setDocument($document);
【讨论】:
如何设置文件包的内容?我正在使用https://github.com/kriswallsmith/Buzz/blob/master/lib/Buzz/Browser.php
,我必须发送一个带有文件包集的 POST 请求。我的代码中有 fileObj。我用is_file()
方法验证了它。
你也能回答我的问题吗?我面临同样的问题,这是我的问题。 ***.com/q/44352796/1395965
$this->getRequest()
似乎在 2.4 中已被弃用,并在 3.0 中被删除。 $request->files->get('filename')
为我工作
同时检查 PHP 是否接受文件。这里有一些 php.ini
指令 php.net/manual/en/ini.core.php#ini.sect.file-uploads 例如必须设置为 on 的 file_uploads
或 upload_max_filesize
等等。以上是关于如何在没有表单的情况下获取文件上传的主要内容,如果未能解决你的问题,请参考以下文章
如何在上传之前获取文件名并在没有 fakepath 的情况下传递到另一个文本输入字段