2012-11-20 39 views
1

我需要一種方法,用戶可以通過這種方法輸入文件並在GWT面板中顯示文件的內容。內容不需要發送到任何服務器,我寧願保留文件客戶端。我試過以下內容:帶安全過濾器和瀏覽器兼容性的GWT文件上傳

  • 使用庫lib-gwt-file。它在Firefox中完美運行,主要在Chrome中運行,並且在Internet Explorer中完全不起作用。我需要支持所有這些瀏覽器。我通過電子郵件發送了圖書館的作者,但沒有收到回覆。使用方法such as this使用FileUpload對象和FormPanel。但是,我的組織使用安全過濾器,需要設置標頭才能與服務器通信。我明白,標題不能爲FormPanel設置。

  • 我已經調查了GWT的其他文件上傳庫,如GWTUpload,但他們並沒有真正做我想做的。我不想將文件上傳到我的服務器,我只需要文件客戶端的內容。

我沒有想法,我不知道如何才能完成這個簡單的任務。有沒有人有任何其他方法或方法來超越我目前的障礙的建議?
謝謝。

+0

您的第二個選項使用標準的GWT FileUpload,這可以添加到任何類型的面板。如果你爲第二點顯示了一些代碼,它可能會有所幫助。不知道其他庫。 – Martin

+0

我沒有打擾添加代碼,因爲我的實現與所有重要方式中包含的鏈接完全相同。我知道可以將FileUpload對象添加到任何類型的面板,但我不知道通過附加到FormPanel並提交給servlet來訪問文件內容的任何方式。 FileUpload的文檔指出,不幸的是沒有其他方式。 – breakspirit

回答

1

使用lib-gwt-file API是實現這一目標的最佳方式,因爲它爲GWT封裝了HTML5 File API,這使得本地文件系統訪問成爲可能;就我所知,本地文件系統訪問是不可能的。不幸的是,IE 9和更低版本不支持File API,所以這就是爲什麼lib-gwt-file不起作用。直到IE10,File API才被引入到IE中。

編輯:根據這SO answer,你可以通過ActiveX訪問IE中的本地文件系統,但它是限制和GWT使用它,你將不得不使用JSNI在你的GWT代碼手寫JavaScript。

2

我現在可以完全回答我自己的問題。 Neeko在上面是正確的,但是lib-gwt-file在這個用例中不能正常工作。於是,我聯繫了該圖書館的製造者並解釋了這些問題。他已經解決了我在Chrome中遇到的問題,並且使IE10能夠很好地工作。正如Neeko所說,IE9不支持。

在IE10中,必須在URL的末尾添加& mode = typeArrays,才能支持typedArrays。這是IE中一個錯誤的解決方法,可能並不總是必要的。

在Chrome中,存在一個Webkit錯誤,其中兩次選擇相同的文件不會再觸發更改事件,因此無法連續兩次上傳同一文件。在下一個版本的lib-gwt-file中有一個解決方法。

Firefox的正常工作作爲版本0.3.2

因此,如果任何人試圖使用這個庫和經驗豐富的這些問題,它現在應該爲你工作好。 lib-gwt-file的作者Lukas Laag對解決這些問題非常有幫助。

+0

很高興聽到作者能夠進一步幫助您,並將錯誤修復程序修復到庫中。感謝您發佈更新。 – Neeko