Spec-Zone.ru › Web APIs

FileReader: свойство result

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с января 2020 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Веб-воркерах.

Чтение-только свойство result интерфейса FileReader возвращает содержимое файла. Это свойство становится доступным только после завершения операции чтения, а формат данных зависит от метода, используемого для инициирования операции чтения.

Значение

Соответствующая строка или ArrayBuffer, в зависимости от метода чтения, используемого для инициализации операции чтения. Значение равно null если чтение еще не завершено или было неуспешным.

Типы результатов описаны ниже.

Метод Описание
readAsArrayBuffer() result — JavaScript ArrayBuffer содержащий двоичные данные.
readAsBinaryString() result содержит необработанные двоичные данные из файла в виде строки.
readAsDataURL() result — строка с data: URL, представляющая данные файла.
readAsText() result — текст в виде строки.

Примеры

В этом примере представлена функция reader(), которая считывает файл из элемента ввода файла. Она работает путем создания объекта FileReader и создания обработчика событий load, так что при чтении файла значение result получается и передается в функцию обратного вызова, переданную в reader().

Содержимое обрабатывается как необработанные текстовые данные.

// Given this HTMLInputElement of type="file":
// <input id="image" type="file" accept="image/*">

function reader(file, callback) {
  const fr = new FileReader();
  fr.onload = () => callback(null, fr.result);
  fr.onerror = (err) => callback(err);
  fr.readAsDataURL(file);
}

document.querySelector("#image").addEventListener("change", (evt) => {
  // No files, do nothing.
  if (!evt.target.files) {
    return;
  }
  reader(evt.target.files[0], (err, res) => {
    console.log(res); // Base64 `data:image/...` String result.
  });
});

Учитывая асинхронный характер FileReader, вы можете использовать подход на основе Promise. Вот пример для элемента ввода файла с атрибутом multiple, который возвращает Promise.

// Given this HTMLInputElement:
// <input id="images" type="file" accept="image/*" multiple>

const reader = (file) =>
  new Promise((resolve, reject) => {
    const fr = new FileReader();
    fr.onload = () => resolve(fr);
    fr.onerror = (err) => reject(err);
    fr.readAsDataURL(file);
  });

async function logImagesData(fileList) {
  let fileResults = [];
  const frPromises = fileList.map(reader);

  try {
    fileResults = await Promise.all(frPromises);
  } catch (err) {
    // In this specific case, Promise.all() might be preferred
    // over Promise.allSettled(), since it isn't trivial to modify
    // a FileList to a subset of files of what the user initially
    // selected. Therefore, let's just stash the entire operation.
    console.error(err);
    return;
  }

  fileResults.forEach((fr) => {
    console.log(fr.result); // Base64 `data:image/...` String result.
  });
}

// HTMLInputElement type="file" Event handler:
document.querySelector("#images").addEventListener("change", (evt) => {
  // If no files, do nothing.
  if (!evt.target.files) {
    return;
  }
  logImagesData([...evt.target.files]);
});

Спецификации

Спецификация
File API
# dom-filereader-result

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
result 6 12 3.6 11 6 18 32 11 6 1.0 3

См. также

  • FileReader

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/FileReader/result

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API