Как получить содержимое файла с Fancytree?
Я использую FancyTree для перетаскивания файлов с компьютера пользователя. Все работает нормально до обратного вызова dragDrop. Здесь я не могу получить данные большого двоичного объекта из удаленного файла. Много другой информации доступно в data.dataTransfer.files
свойство, как показано ниже:
Во всяком случае, я не могу найти способ получить содержимое файла. Я должен отправить файл в службу загрузки, например Uppy File Uploader, поэтому данные файла являются для меня обязательными.
1 ответ
Наконец, я обнаружил, что моя проблема, в более общем смысле, была " Как получить содержимое из файлового объекта в Javascript". И впоследствии этот FileReader - лучший друг в таком случае.
dragDrop: function (node, data) { //dradDrop fancyTree event callback
...
const current_file = data.dataTransfer.files[0];
if (current_file != null) { //i.e. when another fancytree is dropped dataTransfer.files is an empty array
const reader = new FileReader();
reader.addEventListener("loadend", function (event) {
file2upload = event.target.result; //This is the raw content of the file
//For my purposes the following 3 lines apply a byte array to Blob conversion
const binaryData = [];
binaryData.push(file2upload);
const blob = new Blob([new Uint8Array(file2upload)]);
});
reader.readAsArrayBuffer(current_file); //Read the File object as a byte array stream
}
}
Приведенный выше фрагмент хорошо прокомментирован, так что, думаю, добавить нечего.