Fazendo upload de BLOB / ArrayBuffer com Dropzone.js

Usando a API REST do SharePoint 2013, estou carregando arquivos com êxito, como.docx ou.pngpara uma pasta dentro de uma biblioteca de documentos usando o Dropzone.js. Eu tenho uma função na qual inicializo meu dropzone da seguinte maneira:

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());
});

O problema que encontrei é que quase todos os arquivos (o PDF não é o único) são mostrados como arquivos corrompidos quando o upload é feito. Provavelmente, isso ocorre porque o SharePoint exige que o arquivo que está sendo carregado seja enviado como umArrayBuffer. Origem do MSDN

Usando um Ajax POST comum e o método acima para converter o arquivo em um buffer de matriz, carreguei com êxito o conteúdo na biblioteca de documentos do SharePoint, sem que eles fiquem corrompidos. Agora, eu gostaria de fazer o mesmo, mas sem ter que omitir o uso do Dropzone.js, que adiciona um toque muito agradável à interface da funcionalidade.

Eu olhei para modificar ouploadFiles()-método emdropzone.js, mas isso parece drástico. Eu também tentei descobrir se posso ou não usar oaccept opção emoptions mas isso parece um beco sem saída.

Os dois problemas mais semelhantes com soluções são os relacionados abaixo, onde o primeiro parece ser aplicável no meu caso, mas ao mesmo tempo parece menos "limpo" do que eu gostaria de usar.

O segundo é para carregar imagens com umBase64 codificação.

1 - Simulando XHR para obter ArrayBuffer

2 - Carregar imagem como Base64 com o Dropzone.js

Portanto, minha pergunta, em poucas palavras, é: quando um arquivo é adicionado, como intercepto isso, converto os dados em um buffer de matriz e depois o POST usando o Dropzone.js?

questionAnswers(2)

yourAnswerToTheQuestion