Чтение содержания файла на клиентском в JavaScript в различных браузерах

Решение на самом деле одно и то же: сделать StatefulWidget

class Foo extends StatefulWidget {
  @override
  _FooState createState() => _FooState();
}

class _FooState extends State<Foo> {
  Stream<QuerySnapshot> stream;

  @override
  void initState() {
    super.initState();
    stream = Firestore.instance.collection('books').snapshots();
  }

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: stream,
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        //  do something with books
      },
    );
  }
}
95
задан Damovisa 16 April 2009 в 00:58
поделиться

1 ответ

Отредактировано для добавления информации о Файловом API

Поскольку я первоначально написал этот ответ, Файловый API был предложен в качестве стандарта и реализован в большинстве браузеров (начиная с IE 10, в который добавлена ​​поддержка API-интерфейса FileReader , описанного здесь, хотя еще не было File API). API немного сложнее, чем более старый API Mozilla, поскольку он разработан для поддержки асинхронного чтения файлов, лучшей поддержки двоичных файлов и декодирования различных кодировок текста. имеется некоторая документация, доступная в Mozilla Developer Network , а также различные примеры в Интернете. Вы могли бы использовать его следующим образом:

var file = document.getElementById("fileForUpload").files[0];
if (file) {
    var reader = new FileReader();
    reader.readAsText(file, "UTF-8");
    reader.onload = function (evt) {
        document.getElementById("fileContents").innerHTML = evt.target.result;
    }
    reader.onerror = function (evt) {
        document.getElementById("fileContents").innerHTML = "error reading file";
    }
}

Оригинальный ответ

Похоже, что нет способа сделать это в WebKit (например, Safari и Chrome). Единственными ключами, которые имеет объект File , являются fileName и fileSize . Согласно сообщению коммита для поддержки File и FileList, они основаны на объекте файла Mozilla , но, похоже, они поддерживают только подмножество функций.

Если бы вы Как бы изменить это, вы всегда можете отправить патч в проект WebKit. Другой возможностью было бы предложить API Mozilla для включения в HTML 5 ; рассылка WHATWG , вероятно, является лучшим местом для этого. Если вы сделаете это, то, скорее всего, будет кросс-браузерный способ сделать это, по крайней мере, через пару лет. Конечно,

131
ответ дан Kat 24 November 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: