2012-02-14 7 views
2

ファイルの内容を読み込み、配列に格納します。 私はformPanelとformuploadを使ってファイルをブラウズするコードを持っています。GWTのクライアント側のファイルを読み取る

ファイルを読み込んでアレイに格納する方法。

サンプルコードはすばらしいヘルプになります。

答えて

2

GWTのクライアントコードを単純にするJavaScriptであり、任意の通常のJavaScriptはブラウザのサンドボックスモデルでの対象となることと同じ制限によって制約されます。

つまり、どのブラウザからもJavaScriptにローカルファイルへのアクセスはありません。

ファイルダイアログボックスと結果のサーバーへの転送はブラウザによって処理され、JavaScriptコードでは使用できません。

ファイルをサーバーにアップロードしてからサーバー上でファイルを処理し、サーバーからクライアントにデータを送り返して表示する必要があるものを表示する必要があります。 GWTから

+2

HTML5 FileReaderを使用できます。ここにその動作の例があります:http://codepen.io/matt-west/pen/KjEHg – Craigo

0

1)

2)例えばGWT-アップロードを使用して(ご使用のサーバーにファイルをアップロードします)次にあなたが使用することができ、ファイル

+0

:最初にファイルの内容を配列に格納してから配列を転送します。 – NewCodeLearner

0

のバイトを取得するために、サーバーにクライアントからの要求を行いますFlashまたはJavaアプレットを使用して、すべてのクライアント側で実行できます。しかし、これらは複雑で、おそらくそれほど美しいものではありません。

はGWTでJavaアプレットを統合するためのGwtAIを見てください: http://code.google.com/p/gwtai/

2

てみ利用元素ライブラリ:txtArea(すべてのクライアントサイト)へのファイルの内容を読んで

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

例コード:

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

+0

すばらしい解決策。ありがとうございました –

関連する問題