瀏覽器上傳文件的典型方法是使用輸入type='file'
表單字段。沒有形式,無法使用AJAX上傳文件。至少我找不到任何東西。我認爲,這是一個安全措施。
因此,要使文件上傳可用,您必須提供一個帶有file
輸入的表單。表格必須通過常規請求提交,而不是AJAX。
所以你必須定義FormPanel
並添加FileUpload
它。示例:
final FormPanel form = new FormPanel();
form.setAction("my.action");
// Because we're going to add a FileUpload widget, we'll need to set the
// form to use the POST method, and multipart MIME encoding.
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
// Create a FileUpload widget.
fileUpload = new FileUpload();
fileUpload.setName("fileUpload");
form.add(fileUpload);
// Add other components to form
其他組件將包括用戶文本輸入。可能有不同的處理方法,但我認爲最好的辦法是通過相同的表單提交來處理它們。
現在,你必須添加一些東西來觸發表單提交。
submitButton = new Button("Upload", new ClickHandler() {
public void onClick(ClickEvent event) {
form.submit();
}
});
formPanel.add(submitButton);
最後,您必須處理上傳。你可以用多種方式做,但它必須是常規的請求處理,而不是通過AJAX或GWT。我個人喜歡使用Spring MVC。但是你可以使用你的選擇框架。這裏我不打算討論細節。如果你願意,你可以編寫Perl腳本。
這種方法還有其他選擇。您可以使用Flash,您可以使用Adobe AIR,並且可能有其他方法。在不同的圖書館中有這些方法的小部件。檢查這個站點:http://google.wikia.com/wiki/Google_Web_Toolkit。
聲明:這是我使用的方法。我可能錯過了一些東西,也可能有其他方法,我很想了解。