Jef*_*opo 5 php symfony-forms symfony
我正在尝试制作一个包含多个文件字段的表单.由于文档很模糊:
我决定使用W3C FileReader API(基于下面的文档URL)来处理来自客户端的文件,并管理从视图到实体的底层数据.目前支持在客户端上进行拖放,元数据和多项选择.
但是我想给UploadedFile对象一个机会,而我遇到的主要问题是我无法在我的实体(FileUpload类型)中创建文件属性来存储多个文件数据.我的输入如下:
<input type="file" id="upload_files" name="upload[files][]" required="required" multiple="multiple" />
Run Code Online (Sandbox Code Playgroud)
理论上如果我将名称作为一个数组,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
为简洁起见,以下是相关文件:
表格: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
视图:https: //github.com/jeflopo/fileupload/blob/master/src/Acme/DemoBundle/Resources/views/Demo/upload.html.twig
处理客户端上文件的JavaScript(不影响服务器中的文件行为):https: //github.com/jeflopo/fileupload/blob/master/src/Acme/DemoBundle/Resources/public/js/ upload.js
我创建了一个修复错误的拉取请求!
现在剩下要做的就是为上传的文件创建唯一的文件名,然后对每个文件使用 move 方法。如果您不移动它们,文件将不会被保存!
当我将映射设置为 false 时,您的实体不包含这些文件。您必须使用刚刚创建的文件名创建一个数组来保存文件路径。