【问题标题】:How to make FileUpload Object handle Multiple files in Symfony2?如何使 FileUpload 对象在 Symfony2 中处理多个文件?
【发布时间】:2013-03-01 18:56:09
【问题描述】:

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

我决定使用 W3C FileReader API(基于下面的文档 url)来处理来自客户端的文件并管理从视图到实体的基础数据。目前支持客户端拖拽、元数据、多选。

但我想再给 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

还尝试将$files 属性初始化为数组(在实体的__construct 中)并修改setFiles() 以存储新数组索引的$this-&gt;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

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

【问题讨论】:

  • 谢谢,这是一个实用且很好的例子,但是它使用了一个集合类型。这意味着一堆单字段文件。我只需要一个具有多个属性的字段。

标签: php symfony symfony-forms


【解决方案1】:

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

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

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

【讨论】:

  • 哇,看起来比我想象的要简单得多。谢谢你,真的。让我试试。啊,哈哈,这是我在 github 上的第一个 MergePull。我希望能做好。 xD
猜你喜欢
  • 2013-03-01
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 2021-11-04
相关资源
最近更新 更多