Как исправить Uncaught (в обещании) TypeError: Не удалось выполнить readAsArrayBuffer для FileReader: параметр 1 не относится к типу Blob - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь сохранить в папке SharePoint файл .pptx, созданный с использованием библиотеки pptxgenjs.Я сгенерировал нужный мне большой двоичный объект в консоли, но не смог сохранить его в папке после создания.

Сценарий запускается по событию click.Я просто включаю последний бит, так как проблема есть.Я просто не знаю, как ее решить.

var targetUrl = webUrl + "/" + documentLibrary + "/" + folderName;
var FullUrl = webUrl + "/_api/Web/GetFolderByServerRelativeUrl(@target)/Files/add(overwrite=true, url='" + fileName + "')?$expand=ListItemAllFields&@target='" + targetUrl + "'";

function getFileBuffer(uploadFile) {
        var deferred = jQuery.Deferred();
        var reader = new FileReader();
        reader.onloadend = function (e) {
            deferred.resolve(e.target.result);
        }
        reader.onerror = function (e) {
            deferred.reject(e.target.error);
        }
        reader.readAsArrayBuffer(uploadFile);
        return deferred.promise();
    }
function uploadFileToFolder(fileObj, url, success, failure) {
            var apiUrl = FullUrl;
            var getFile = getFileBuffer(fileObj);
            getFile.done(function (arrayBuffer) {
                $.ajax({
                    url: apiUrl,
                    type: "POST",
                    data: arrayBuffer,
                    processData: false,
                    async: false,
                    headers: {
                        "accept": "application/json;odata=verbose",
                        "X-RequestDigest": jQuery("#__REQUESTDIGEST").val(),
                    },
                    success: function (data) {
                        console.log(data);
                        //success(data);
                    },
                    error: function (data) {
                        console.log(data);
                        //failure(data);
                    }
                });
            });
        }
        pptx.save('jszip', function(file1) {
             var newblob = file1;   
        getFileBuffer(newblob);
        }, 'blob');

.pptx должен быть сгенерирован и сохранен в указанном URL.Я не хочу, чтобы пользователь загружал файл pptx или делал что-то еще.В настоящий момент я получаю окно загрузки с файлом pptx, работающим нормально, но в консоли я получаю следующую ошибку: Uncaught (в обещании) TypeError: Не удалось выполнить readAsArrayBuffer для FileReader: параметр 1 не относится к типу'Blob'.

Любая помощь будет высоко ценится!

...