1

我是使用 Tapestry5 的 Java 开发人员。我正在使用 jQuery 插件通过 ajax 管理我的文件上传。

我正在寻找临时保存附件的最佳方法,直到实际页面被保存。我当前的工作流程包括用户使用 ajax 上传框或位于文件旁边的 ajax 删除链接(如 gmail 附件)上传/删除文件。在文件上传并单击表单中的保存操作之前,我不想将文件提交到数据库。

我目前正在上传文件并将它们保存到用户会话,直到单击表单中的保存操作。如果只使用一个选项卡,这非常有效,但我不确定这是最好的方法。

有没有人有任何额外的建议?

4

2 回答 2

2

我不得不做一些类似的事情,但是堆栈略有不同(ASP.NET MVC)。

我解决问题的方法是在页面加载时生成一个 GUID 并将其填充到隐藏的输入中。您的数据存储可以是您想要的任何内容(会话、数据库、磁盘等 - 只需确保将 GUID 作为密钥的一部分)。当用户保存表单时,请确保包含您隐藏的输入数据,然后您将有一种独特的方式来识别属于该实例的文件。

于 2013-04-19T18:00:54.820 回答
1

到目前为止,您所做的似乎是正确的,如果用户尝试在多个选项卡中使用您的 Web 应用程序,您可能会遇到麻烦。你可以做的是:

  1. 在使用 ajax 调用上传任何文件之前获取唯一密钥。(注意:正如用户@Ek0nomik 所建议的,这也可以在生成页面时包含在隐藏的输入属性中)
  2. 每当上传文件时,请确保也提交此密钥。
  3. 保存表单后,提交密钥,然后您就知道应该在数据库中提交哪些文件。
于 2013-04-19T18:01:57.733 回答