2012-02-14 33 views
2

我想讀取文件的內容並將其存儲在數組中。 我有一個代碼來瀏覽使用formPanel和formupload的文件。在GWT中讀取客戶端上的文件

如何讀取文件並存儲在數組中。

任何示例代碼都將非常有幫助。

回答

2

GWT的客戶端代碼只是JavaScript和由相同的限制,任何常規的JavaScript將受到在瀏覽器沙箱模型的約束。

也就是說,從任何瀏覽器都沒有本地文件訪問可用於JavaScript。

文件對話框和由此產生的傳輸到服務器由瀏覽器處理,並且JavaScript代碼不以任何方式提供。

您必須將文件上傳到服務器,然後在服務器上處理該文件,並通過從服務器將數據發送回客戶端來顯示需要顯示的內容。從GWT

+2

您可以使用HTML5 FileReader。下面是它的一個實例:http://codepen.io/matt-west/pen/KjEHg – Craigo 2016-07-12 06:27:46

0

1)將文件上傳到服務器(使用GWT上傳的例子)

2)然後,讓您的客戶機向服務器發出請求來檢索文件的字節

+0

:不能我第一次存儲文件的內容在一個數組然後傳輸數組。 – NewCodeLearner 2012-02-14 15:22:43

0

你可以使用Flash或Java Applet在客戶端完成所有操作。但這些都很複雜,可能不是很漂亮的解決方案。

有在GWT看看GwtAI的Java小程序的集成: http://code.google.com/p/gwtai/

2

嘗試使用元素庫:

http://www.gwtproject.org/articles/elemental.html

示例代碼讀取文件內容txtArea(所有客戶的網站):

import elemental.client.*; 
import elemental.dom.*; 
import elemental.html.*; 
FileEntry fileEntry = (FileEntry)entry; 
FileCallback callback = new FileCallback() { 
    public boolean onFileCallback(File file) { 
    final FileReader reader = window.newFileReader(); 
    reader.setOnloadend(new EventListener() { 
     public void handleEvent(Event evt) { 
     txtArea.setText(reader.getResult().toString()); 
     } 
    }); 
    reader.readAsText(file); 
    return true; 
    } 
}; 
fileEntry.file(callback, errorCallback); 

本教程可能也有用: http://www.instantshift.com/2013/11/19/html5-features-with-gwt-elemental/

2

您可以使用HTML5文件閱讀器。這樣的事情:

@UiField FileUpload fileUploadWidget; 

JavaScriptObject files = fileUploadWidget.getElement().getPropertyJSO("files"); 

readTextFile(files); 

public static void fileLoaded(String fileContents) { 
    GWT.log("File contents: " + fileContents); 
} 

public static native void readTextFile(JavaScriptObject files) 
/*-{ 
    var reader = new FileReader(); 

    reader.onload = function(e) { 
     @com.example.YourClass::fileLoaded(*)(reader.result); 
    } 

    return reader.readAsText(files[0]); 
}-*/; 
+0

這是完美的,很棒的解決方案! – dynamphorous 2016-12-14 19:15:24

+0

偉大的解決方案。謝謝 – 2017-09-11 17:48:29