Hochladen von BLOB / ArrayBuffer mit Dropzone.js

Mit der SharePoint 2013 REST-API lade ich erfolgreich Dateien hoch, z. B..docx oder.png zu einem Ordner in einer Dokumentbibliothek mit Dropzone.js. Ich habe eine Funktion, bei der ich meine Dropzone wie folgt initialisiere:

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

Das Problem, auf das ich gestoßen bin, ist, dass fast alle Dateien (PDF ist die einzige, die nicht vorhanden ist) als beschädigte Dateien angezeigt werden, wenn der Upload abgeschlossen ist. Dies liegt höchstwahrscheinlich daran, dass SharePoint erfordert, dass die hochzuladende Datei als @ gesendet wir ArrayBuffer. MSDN Source

Mit einem regulären Ajax-POST und der oben beschriebenen Methode zum Konvertieren der Datei in einen Array-Puffer habe ich Inhalte erfolgreich in die SharePoint-Dokumentbibliothek hochgeladen, ohne dass sie beschädigt werden. Jetzt möchte ich das Gleiche tun, aber ohne auf die Verwendung von Dropzone.js verzichten zu müssen, fügt dies der Oberfläche der Funktionalität eine sehr nette Note hinzu.

Ich habe das @ geändeuploadFiles() -Methode indropzone.js, aber das scheint drastisch. Ich habe auch versucht herauszufinden, ob ich das @ verwenden kann oder nicaccept Option inoptions aber das scheint eine Sackgasse.

Die beiden ähnlichsten Probleme mit Lösungen sind die folgenden, wobei das erste in meinem Fall zutreffend zu sein scheint, aber gleichzeitig weniger "sauber" aussieht, als ich verwenden möchte.

Die zweite dient zum Hochladen von Bildern mit einemBase64 encoding.

1 - XHR simulieren, um ArrayBuffer @ zu erhalt

2 - Bild als Base64 mit Dropzone.js hochladen

So meine Frage in ein paar Worten ist, wenn eine Datei hinzugefügt wird, wie kann ich dies abfangen, die Daten in einen Array-Puffer konvertieren und sie dann mit Dropzone.js POSTEN?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage