Поиск…


Синтаксис

  • reader = new FileReader ();

параметры

Свойство / Метод Описание
error Ошибка при чтении файла.
readyState Содержит текущее состояние FileReader.
result Содержит содержимое файла.
onabort Запускается, когда операция прерывается.
onerror Вызывается при возникновении ошибки.
onload Запускается, когда файл загружен.
onloadstart Запускается при запуске операции загрузки файла.
onloadend Запущен, когда операция загрузки файла закончилась.
onprogress Запущен во время чтения Blob.
abort() Прерывает текущую операцию.
readAsArrayBuffer(blob) Начинает чтение файла как ArrayBuffer.
readAsDataURL(blob) Начинает чтение файла в виде url / uri данных.
readAsText(blob[, encoding]) Начинает чтение файла в виде текстового файла. Невозможно прочитать двоичные файлы. Вместо этого используйте readAsArrayBuffer.

замечания

https://www.w3.org/TR/FileAPI/

Прочитать файл как строку

Убедитесь, что на вашей странице есть файл.

<input type="file" id="upload">

Затем в JavaScript:

document.getElementById('upload').addEventListener('change', readFileAsString)
function readFileAsString() {
    var files = this.files;
    if (files.length === 0) {
        console.log('No file is selected');
        return;
    }

    var reader = new FileReader();
    reader.onload = function(event) {
        console.log('File content:', event.target.result);
    };
    reader.readAsText(files[0]);
}

Прочитать файл как dataURL

Чтение содержимого файла в веб-приложении может быть выполнено с помощью API файлов HTML5. Сначала добавьте ввод с type="file" в свой HTML:

<input type="file" id="upload">

Затем мы добавим прослушиватель изменений в файл-ввод. Эти примеры определяют слушателя через JavaScript, но его также можно добавить как атрибут на элемент ввода. Этот прослушиватель запускается каждый раз, когда выбран новый файл. В рамках этого обратного вызова мы можем прочитать выбранный файл и выполнить дальнейшие действия (например, создание изображения с содержимым выбранного файла):

document.getElementById('upload').addEventListener('change', showImage);

function showImage(evt) {
    var files = evt.target.files;

    if (files.length === 0) {
        console.log('No files selected');
        return;
    }

    var reader = new FileReader();
    reader.onload = function(event) {
        var img = new Image();
        img.onload = function() {
            document.body.appendChild(img);
        };
        img.src = event.target.result;
    };
    reader.readAsDataURL(files[0]);
}

Нарезать файл

Метод blob.slice() используется для создания нового объекта Blob, содержащего данные в указанном диапазоне байтов исходного Blob. Этот метод также можно использовать с экземплярами файлов, так как File расширяет Blob.

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

/**
* @param {File|Blob} - file to slice
* @param {Number} - chunksAmount
* @return {Array} - an array of Blobs
**/
function sliceFile(file, chunksAmount) {
  var byteIndex = 0;
  var chunks = [];
    
  for (var i = 0; i < chunksAmount; i += 1) {
    var byteEnd = Math.ceil((file.size / chunksAmount) * (i + 1));
    chunks.push(file.slice(byteIndex, byteEnd));
    byteIndex += (byteEnd - byteIndex);
  }

  return chunks;
}

Клиентская загрузка csv с использованием Blob

function downloadCsv() {
  var blob = new Blob([csvString]);
  if (window.navigator.msSaveOrOpenBlob){
    window.navigator.msSaveBlob(blob, "filename.csv");
  }
  else {
    var a = window.document.createElement("a");

    a.href = window.URL.createObjectURL(blob, {
      type: "text/plain"
    });
    a.download = "filename.csv";
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
  }
}
var string = "a1,a2,a3";
downloadCSV(string);

Исходная ссылка; https://github.com/mholt/PapaParse/issues/175

Выбор нескольких файлов и ограничение типов файлов

API-интерфейс HTML5-файла позволяет вам ограничить, какие файлы принимаются, просто установив атрибут accept на вход файла, например:

<input type="file" accept="image/jpeg">

Указание нескольких типов MIME, разделенных запятой (например, image/jpeg,image/png ) или использование подстановочных знаков (например, image/* для разрешения всех типов изображений), дает вам быстрый и мощный способ ограничить тип файлов, которые вы хотите выбрать , Вот пример для разрешения любого изображения или видео:

<input type="file" accept="image/*,video*">

По умолчанию вход в файл позволяет пользователю выбрать один файл. Если вы хотите включить множественный выбор файлов, просто добавьте multiple атрибутов:

<input type="file" multiple>

Затем вы можете прочитать все выбранные файлы через массив файлов ввода files . См. Чтение файла как dataUrl

Получить свойства файла

Если вы хотите получить свойства файла (например, имя или размер), вы можете сделать это перед использованием File Reader. Если у нас есть следующий HTML-код:

<input type="file" id="newFile">

Вы можете получить доступ к свойствам следующим образом:

document.getElementById('newFile').addEventListener('change', getFile);

function getFile(event) {
    var files = event.target.files
        , file = files[0];

    console.log('Name of the file', file.name);
    console.log('Size of the file', file.size);
}

Вы также можете легко получить следующие атрибуты: lastModified (Timestamp), lastModifiedDate (Дата) и type (Тип файла)



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow