簡體   English   中英

文件上傳使用 GWT 和一個對話框來瀏覽文件

[英]File Upload using GWT with a Dialog box to browse to the File

我正在開發一個 GWT web 應用程序,用戶正在推送更新(類似於 twitter)。 更新是文本+附件。 我希望用戶輸入更新,可選擇點擊上傳按鈕,彈出瀏覽文件,然后當他們完成后最后點擊“發送更新”按鈕。 文本+附件將存儲在 mysql 中的一行中。 文本為通常的 varchar,文件為 blob。 文件大小會很小。

我目前對如何實現這一目標一無所知。 查看 API 和谷歌搜索,我發現正在使用“FileUpload”小部件。 文檔說它曾經與 FormPanel 一起使用。 我不確定我是否真的得到了全部內容以及如何在我的情況下應用它。

我該如何解決我的問題?

瀏覽器上傳文件的典型方式是使用 input 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

免責聲明:這是我使用的方法。 我可能錯過了一些東西,可能還有其他我想了解的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM