чтение файла на стороне клиента в GWT - PullRequest
2 голосов
/ 14 февраля 2012

Я хочу прочитать содержимое файла и сохранить его в массиве. У меня есть код для просмотра файла с помощью formPanel и formupload.

Как читать файл и хранить в массиве.

Любой пример кода будет очень полезен.

Ответы [ 5 ]

3 голосов
/ 12 июля 2016

Вы можете использовать программу чтения файлов 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]);
}-*/;
2 голосов
/ 26 марта 2015

Попробуйте использовать элементную библиотеку из GWT:

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 голосов
/ 15 февраля 2012

Код клиента GWT - это просто JavaScript, и на него накладываются те же ограничения, что и на любой обычный JavaScript-код, применяемый в модели «песочницы» браузера.

То есть локальный доступ к файлам не доступен для JavaScript из любого браузера.

Диалоговое окно файла и полученная в результате передача на сервер обрабатываются браузером и никак не доступны для кода JavaScript.

Вам потребуется загрузить файл на сервер.а затем обработайте файл на сервере и отобразите то, что вам нужно отобразить, отправив данные обратно на сервер с сервера.

0 голосов
/ 14 февраля 2012

Вы можете использовать Flash или Java-апплет, чтобы сделать все это на стороне клиента.Но это сложные и, вероятно, не очень красивые решения.

Посмотрите на интеграцию GwtAI для Java-апплета в GWT: http://code.google.com/p/gwtai/

0 голосов
/ 14 февраля 2012

1) Загрузите файл на свой сервер (например, используя gwt-upload)

2) Затем сделайте запрос от вашего клиента на сервер, чтобы получить байты файла

...