JSF可恢复文件上传

时间:2012-12-13 09:27:51

标签: http jsf file-upload resume

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

有一个第三方小程序能够实现这一切:JumpLoader。它的主页目前很遗憾(不过你可以试试谷歌缓存)。到目前为止,它会发送一些特定的HTTP请求参数以及multipart/form-data上传请求,告诉服务器端是否是部分上传,如果是,则应该从哪个索引开始,以便servlet可以将各个部分粘合在一起。

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