Чтение файла в Dart

Я пытаюсь прочитать файл (для этой цели сделал простой файл .txt на моем рабочем столе) с машины, использующей Dart в браузере Dartium.

У меня есть поле ввода, я добавил к нему слушателя и вот как это выглядит:

  void _onFileSelect(event) {
    dom.File file = _fileInput.files.item(0);

    dom.FileReader reader = new dom.FileReader();
    //reader.readAsBinaryString(file);

    reader.addEventListener('load', (event) {
      print(reader.result); // This is the line I am having the problem with.
    });

    reader.readAsText(file);
  }

Когда я выбираю файл, я получаю сообщение об ошибке:

Трассировка стека: 0. Функция: 'Object.noSuchMethod' url: 'bootstrap' строка: 717 col: 3

в строке, которую я отметил с помощью встроенного комментария.

Я также настроил скрипт для выполнения Dartium с требуемым флагом:

#!/bin/sh
cd /opt/DartEditor/dart-sdk/chromium
./chrome.exe --allow-file-access-from-files $@

Может кто подскажет, где может быть проблема?

P.S. Я использую Ubuntu Precise x64.


person Pijusn    schedule 05.05.2012    source источник
comment
Хорошо, я не понимаю. Вы хотите читать файл не на стороне сервера, а на стороне клиента? А где должен '' 'print (reader.result);' '' отображать текст? Я тоже новичок, но AFAIK, когда я использовал print, он печатал только текст в моей консоли в DartEditor.   -  person Gero    schedule 06.05.2012
comment
Да, я хочу прочитать локальный файл. Как я уже сказал, он находится у меня на рабочем столе. Print, насколько я знаю, печатает сообщение в журнале, каким бы оно ни было. По умолчанию он выводит его на консоль DartEditor, но если вы откроете веб-консоль в своем браузере, он начнет печатать там. Я использовал этот код, чтобы проверить, может ли он прочитать файл, но, по-видимому, не может.   -  person Pijusn    schedule 06.05.2012


Ответы (1)


К сожалению, вы не можете использовать библиотеки dart: io в Dartium. Эти библиотеки работают только на виртуальной машине Dart из командной строки.

Вы можете использовать XMLHttpRequest для чтения файла с HTTP-сервера.

person Seth Ladd    schedule 07.05.2012