2012-12-13 49 views
2

我想用JSF上傳文件。我希望能夠在暫停後自動恢復上傳(自願或不自願)。 它們的大小約爲500Mb。JSF可恢復文件上傳

我正在使用PrimeFaces,它有一個整潔的FileUpload標籤,但它不會讓我暫停/恢復上傳。

我對此做了一些研究。最常見的答案是「使用FTP客戶端」。其他人則是Java-Applets或Flash。

它應該適用於當前的Firefox/Chrome和IE8。

回答

2

確實無法通過HTML <input type="file">元素恢復文件上傳。 multipart/form-data編碼中沒有任何支持它的東西。更重要的是,沒有標準格式編碼規範支持它。你基本上需要發明一個自定義的HTTP請求格式。

用Java術語來說,最好的選擇是自制一個applet或webstart應用程序,它使用Swing JFileChooser挑選文件並使用URLConnection通過HTTP將它發送到服務器。在服務器端,您需要一個自定義Servlet,它可以理解自定義請求格式並相應地處理部分上傳。

有一個第三方小程序可以完成這一切:JumpLoader。它的主頁目前不幸停止運行(不過您可以嘗試Google緩存)。至此,它會發送一些特定的HTTP請求參數以及multipart/form-data上傳請求,告訴服務器端它是否是部分上傳,如果是,應該在哪個索引處啓動,以便servlet可以將這些部分粘合在一起。

然後,爲了將這一切與JSF集成在一起,最好的方法是讓applet以URL路徑片段的形式傳遞會話ID,以便該servlet與JSF應用程序共享相同的HTTP會話。通過這種方式,上傳servlet可以訪問會話範圍的JSF託管的bean,和/或JSF應用程序可以在HTTP會話中輪詢某些servlet特定的變量。