Загрузка BLOB / ArrayBuffer с Dropzone.js

Используя SharePoint 2013 REST API, я успешно загружаю файлы, такие как.docx или же.pngв папку внутри библиотеки документов, используя Dropzone.js. У меня есть функция, где я инициализирую свою зону сброса следующим образом:

myDropzone = new Dropzone("#dropzone");

myDropzone.on("complete", function (file) {
    myDropzone.removeFile(file);
});

myDropzone.options.autoProcessQueue = false;

myDropzone.on("addedfile", function (file) {
    $('.dz-message').hide();
    myDropzone.options.url = String.format(
    "{0}/{1}/_api/web/getfolderbyserverrelativeurl('{2}')/files" +
    "/add(overwrite=true, url='{3}')",
    _spPageContextInfo.siteAbsoluteUrl, _spPageContextInfo.webServerRelativeUrl, folder.d.ServerRelativeUrl, file.name);
});

myDropzone.options.previewTemplate = $('#preview-template').html();

myDropzone.on('sending', function (file, xhr, fd) {
    xhr.setRequestHeader('X-RequestDigest', $('#__REQUESTDIGEST').val());
});

Проблема, с которой я столкнулся, состоит в том, что почти все файлы (PDF, единственный, которого нет) отображаются как поврежденные файлы, когда загрузка завершена. Это, скорее всего, связано с тем, что SharePoint требует, чтобы загружаемый файл отправлялся какArrayBuffer. MSDN Source

Используя обычный Ajax POST и описанный выше метод для преобразования файла в буфер массива, я успешно загрузил содержимое в библиотеку документов SharePoint, не повредив их. Теперь я хотел бы сделать то же самое, но не исключать использование Dropzone.js, который добавляет очень приятный штрих в интерфейс функциональности.

Я смотрел на изменениеuploadFiles()-метод вdropzone.js, но это кажется решительным. Я также пытался выяснить, могу ли я использоватьaccept вариант вoptions но это похоже на тупик.

Две наиболее похожие проблемы с решениями - это те, которые связаны ниже, где первая, кажется, применима в моем случае, но в то же время выглядит менее «чистой», чем я хотел бы использовать.

Второй - для загрузки изображений сBase64 кодирование.

1 - Имитация XHR для получения ArrayBuffer

2 - Загрузить изображение как Base64 с Dropzone.js

Итак, мой вопрос в нескольких словах, когда при добавлении файла, как мне перехватить это, преобразовать данные в буфер массива, а затем отправить его с помощью Dropzone.js?

Ответы на вопрос(2)

Ваш ответ на вопрос