2

我想用 JSF 上传文件。我希望能够在暂停后恢复上传(自愿或非自愿)。它们的大小约为 500Mb。

我正在使用 PrimeFaces,它有一个简洁的 FileUpload-Tag,但它不允许我暂停/恢复上传。

我对此做了一些研究。最常见的答案是“使用 FTP 客户端”。其他的是 Java-Applet 或 Flash。

它应该适用于当前的 Firefox/Chrome 和 IE8。

4

1 回答 1

2

确实不可能通过 HTML<input type="file">元素恢复文件上传。multipart/form-data编码中没有任何东西可以支持它。更重要的是,没有标准的格式编码规范支持它。您基本上需要发明一种自定义 HTTP 请求格式。

在 Java 术语中,最好的办法是为此自制一个 applet 或 webstart 应用程序,它使用 SwingJFileChooser来挑选文件并用于URLConnection通过 HTTP 将其发送到服务器。在服务器端,您需要一个Servlet了解自定义请求格式并相应处理部分上传的自定义项。

有一个第 3 方小程序可以做到这一切:JumpLoader。不幸的是,它的主页目前已关闭(但是您可以尝试使用 Google Cache)。最重要的是,它发送一些特定的 HTTP 请求参数以及multipart/form-data上传请求,告诉服务器端是否是部分上传,如果是,它应该从哪个索引开始,以便 servlet 可以将各个部分粘合在一起。

然后,要将这一切与 JSF 集成,最好的办法是让 applet 将会话 ID 作为 URL 路径片段传递,以便 servlet 与 JSF 应用程序共享相同的 HTTP 会话。这样,上传 servlet 可以访问会话范围内的 JSF 托管 bean 和/或 JSF 应用程序可以轮询 HTTP 会话中的某些特定于 servlet 的变量。

于 2012-12-13T13:03:30.840 回答