Поиск…
Синтаксис
- 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. |
замечания
Прочитать файл как строку
Убедитесь, что на вашей странице есть файл.
<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
(Тип файла)