Как получить содержимое файла с Fancytree? - PullRequest
0 голосов
/ 12 сентября 2018

Я использую FancyTree для перетаскивания файлов с компьютера пользователя. Все работает нормально до обратного вызова dragDrop. Здесь я не могу получить данные большого двоичного объекта из удаленного файла. Многие другие данные доступны в data.dataTransfer.files свойстве, как показано ниже:

enter image description here

В любом случае, я не могу найти способ получить содержимое файла. Я должен отправить файл в службу загрузки, например Uppy File Uploader, поэтому данные файла являются для меня обязательными.

1 Ответ

0 голосов
/ 20 сентября 2018

Наконец я обнаружил, что моя проблема, в более общем смысле, была Как получить содержимое из файлового объекта в 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
 }
}

Приведенный выше фрагмент хорошо прокомментирован, так что, думаю, добавить нечего.

...