我正在尝试制作一个包含多个文件字段的表单。由于文档非常模糊:
- http://symfony.com/doc/current/reference/forms/types/file.html
- http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html
我决定使用 W3C FileReader API(基于下面的文档 url)来处理来自客户端的文件并管理从视图到实体的基础数据。目前在客户端支持拖放、元数据和多选。
- http://www.html5rocks.com/en/tutorials/file/dndfiles/
- http://playground.html5rocks.com/#reading_file_metadata
- https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications
但是我想再给 UploadedFile 对象一次机会,而我遇到的主要问题是我无法使我的实体(FileUpload
类型)中的文件属性存储多个文件数据。我的输入如下所示:
<input type="file" id="upload_files" name="upload[files][]" required="required" multiple="multiple" />
理论上,如果我将名称设为数组,则 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 或添加将 a(n) 数组转换为 Symfony\Component\HttpFoundation\File\File 实例的视图转换器来避免此错误。
我不熟悉数据转换器。并且无法弄清楚现在该怎么做。或者如果使用每个文件数据获取 UploadedFile 对象真的很有用。
综合中...有了这个给定的信息,以及下面的代码。谁能帮我让 FileUpload 对象获得正确数量的文件,而不仅仅是最后添加的文件?谢谢你
在 github 上做了一个 repo:https ://github.com/jeflopo/fileupload
为简洁起见,以下是相关文件:
表格: https ://github.com/jeflopo/fileupload/blob/master/src/Acme/DemoBundle/Form/Type/FileUploadType.php
实体: https ://github.com/jeflopo/fileupload/blob/master/src/Acme/DemoBundle/Entity/FileUpload.php
控制器(只看uploadAction): https ://github.com/jeflopo/fileupload/blob/master/src/Acme/DemoBundle/Controller/DemoController.php
在客户端处理文件的 JavaScript(不影响服务器中的文件行为): https ://github.com/jeflopo/fileupload/blob/master/src/Acme/DemoBundle/Resources/public/js/上传.js