2012-02-14 4 views
2

파일 내용을 읽고 배열에 저장하고 싶습니다. formPanel 및 formupload를 사용하여 파일을 탐색하는 코드가 있습니다.GWT에서 클라이언트 측 파일 읽기

파일을 읽고 배열에 저장하는 방법.

모든 샘플 코드는 도움이 될 것입니다. (

답변

2

GWT 클라이언트 코드는 단순히 자바 스크립트이며, 정규 자바 스크립트가 브라우저 샌드 박스 모델의 대상이 될 것 같은 한계에 의해 제한된다

는 GWT에서 자바 애플릿 통합을위한 GwtAI에서보세요.

즉, 모든 브라우저에서 JavaScript에 로컬 파일 액세스를 사용할 수 없습니다.

파일 대화 상자와 서버로 전송되는 결과는 브라우저에서 처리되며 어떤 방식 으로든 JavaScript 코드에서 사용할 수 없습니다.

파일을 서버에 업로드 한 다음 서버에서 파일을 처리하고 서버에서 클라이언트로 다시 데이터를 보내서 표시해야하는 내용을 표시해야합니다. GWT에서

+2

HTML5 FileReader를 사용할 수 있습니다. 작동중인 예제가 있습니다. http://codepen.io/matt-west/pen/KjEHg – Craigo

0

1) 서버에 파일을 업로드 플래시 또는 Java 애플릿을 사용하여 모든 클라이언트 측에서 수행 할 수 있습니다. 그러나 그것들은 복잡하고 아마 아주 아름다운 해결책은 아닙니다. http://code.google.com/p/gwtai/

+0

: 먼저 파일의 내용을 배열에 저장 한 다음 배열을 전송합니다. – NewCodeLearner

0

당신이 사용할 수있는 파일의 바이트를 검색 할 수

2) 그런 다음 서버로 클라이언트의 요청을) 예를 들어, GWT 업로드를 사용

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

+0

그레이트 솔루션. 고맙습니다 –

관련 문제