Php 在表单中与其他字段一起使用oneuploader

Php 在表单中与其他字段一起使用oneuploader,php,forms,symfony,Php,Forms,Symfony,我想使用Symfony2形式的bundle,它还包含其他字段。换句话说,上传的文件作为表单中其余数据的附件处理。但是我只能找到关于如何将上传程序作为一个单独的表单添加到文件发送到它自己的控制器的说明。那么如何处理我刚才描述的用例呢?这里是Bundle dev 前端上传者喜欢或总是在上传文件到服务器时伪造一个单独的请求。这意味着上载过程在控制器中处理表单之前进行。如果您真的希望将文件与主表单请求一起上载,则不应使用此类上载程序。相反,创建一个实体Media(或类似)将其映射到具有OneToMany

我想使用Symfony2形式的bundle,它还包含其他字段。换句话说,上传的文件作为表单中其余数据的附件处理。但是我只能找到关于如何将上传程序作为一个单独的表单添加到文件发送到它自己的控制器的说明。那么如何处理我刚才描述的用例呢?

这里是Bundle dev

前端上传者喜欢或总是在上传文件到服务器时伪造一个单独的请求。这意味着上载过程在控制器中处理表单之前进行。如果您真的希望将文件与主表单请求一起上载,则不应使用此类上载程序。相反,创建一个实体
Media
(或类似)将其映射到具有
OneToMany
ManyToMany
关联的基本实体,并将其添加到具有
实体
类型的表单中

例如,这里有一些关于StackOverflow的非常好的答案

但是,如果您选择而不是使用前端上传程序,则所有文件将同时发送到服务器。根据文件大小/服务器配置,这可能导致上载错误。此外,上传将不再异步执行,这迫使用户在提交表单后等待上传完成

在处理创建表单上的异步多个上载时,通常会出现问题。我试图回答一个类似的问题

在创建掩码上启用文件上载的问题是,最终会导致孤立文件。这是因为用户能够在不保存实际实体的情况下触发上载

您的问题似乎是这个捆绑包的一个很好的用例。它允许您在实际实体存在以将这些文件附加到之前上载文件。提交主表单后,您可以检索文件,并在其上进行检索

注意:这绝不是一个完美的解决方案。看一看这个!可以说,;由于此功能基于会话,因此用户可能会两次上载文件。一定要相应地处理这个问题


还有一种可能性是,您可能只想向文件上载请求添加更多数据:由于这是在前端上载程序中处理的,因此不同的实现会有所不同。例如,jQuery文件上载程序只是序列化整个表单和


个人推荐:我不会将文件与表单提交请求一起发送。相反,请使用前端上传器,并且:

  • 允许用户上传文件,直到实体存在于其应附加的位置。这是一种非常常见的策略,在大多数情况下是理想的策略。创建实体时,只需简单的第二步就足够了
  • 如果您确实希望能够直接在创建掩码上上载文件,请查看孤儿院功能

感谢您的详细回答。我需要做一些思考,看看更改表单是否有意义,以便只有在创建实体后才能上载文件,或者孤儿院功能是否是更好的选择。无论哪种方式,我都同意应该避免在表单请求中发送特别大的文件。