如何使FileUpload对象处理Symfony2中的多个文件?

时间:2013-03-13 17:18:20

标签: php symfony symfony-forms

我正在尝试制作一个包含多个文件字段的表单。由于文档很模糊:

我决定使用W3C FileReader API(基于下面的文档URL)来处理来自客户端的文件,并管理从视图到实体的底层数据。目前支持客户端上的拖放,元数据和多个选择。

但是我想给UploadedFile对象多一次机会,而我遇到的主要问题是我无法在我的实体(FileUpload类型)中创建文件属性来存储多个文件数据。我的输入如下:

<input type="file" id="upload_files" name="upload[files][]" required="required" multiple="multiple" />

理论上如果我将名称设为Array,则fileUpload应该包含文件但不包含。 UploadedFile对象可以存储多个文件数据吗?还是单身?

http://api.symfony.com/2.2/Symfony/Component/HttpFoundation/File/UploadedFile.html

还尝试将__construct属性初始化(在实体的$files中作为数组,并修改setFiles()以存储新数组索引的$this->files[] = $file; ...你知道吗。

然后Symfony告诉我异常:

  

表单的视图数据应该是Symfony \ Component \ HttpFoundation \ File \ File类的实例,但是是(n)数组。您可以通过将“data_class”选项设置为null或添加将(n)数组转换为Symfony \ Component \ HttpFoundation \ File \ File的实例的视图转换器来避免此错误。

我对数据变换器并不熟悉。并且无法弄清楚现在怎么办。或者如果使用每个文件数据获取UploadedFile对象真的很有用。

在综合中... 使用此给定信息和下面的代码。任何人都可以帮我获取FileUpload对象正确数量的文件,而不仅仅是最后添加的文件?谢谢

在github上制作了一个回购:https://github.com/jeflopo/fileupload

为简洁起见,以下是相关文件:

1 个答案:

答案 0 :(得分:3)

我创建了一个修复错误的拉取请求!

现在要做的是为上传的文件创建唯一的文件名,然后对每个文件使用move方法。如果你不移动它们,文件将不会被保存!

当我将map映射为false时,您的实体不包含这些文件。您必须使用刚创建的文件名创建一个数组,以保存文件路径。