簡體   English   中英

通過SP REST API的Sharepoint AddIn上傳.PDF

[英]Sharepoint AddIn upload .PDF via SP REST API

我有一個功能,可以將文件上傳到列表項。 一切都適用於.png,但是當我嘗試上傳.pdf時出現錯誤net::ERR_CONNECTION_RESET

錯誤對象的畫面:

錯誤

我的代碼:

function uploadFile(listName, itemId, fileName, file) {
    uploadFileSP(listName, itemId, fileName, file)
    .then(function (files) {
        //success
    }, function (sender, args) {
        alert('error: ' + args.get_message());
    });
}

function getFileBuffer(file) {
    var deferred = $.Deferred();
    var reader = new FileReader();
        reader.onload = function (e) {
        deferred.resolve(e.target.result);
    }
    reader.onerror = function (e) {
        deferred.reject(e.target.error);
    }
    reader.readAsArrayBuffer(file);
    return deferred.promise();
}

function uploadFileSP(listName, id, fileName, file) {
    var deferred = $.Deferred();
    getFileBuffer(file)
    .then(function (buffer) {
        var bytes = new Uint8Array(buffer);
        var content = new SP.Base64EncodedByteArray();
        var binary = '';
        for (var b = 0; b < bytes.length; b++) {
            binary += String.fromCharCode(bytes[b]);
        }
        console.log(binary);
        executor.executeAsync({
            url: appweburl + "/_api/web/lists/getbytitle('" + listName + "')/items(" + id + ")/AttachmentFiles/add(FileName='" + file.name + "')",
            method: "POST",
            binaryStringRequestBody: true,
            body: binary,
            success: function (data) { alert('Pomyślnie dodano fakturę!'); window.location.replace("http://sharepoint-dev.ampliapps.com/FakturyBPNT-SharePoint-Hosted/Lists/Faktury/AllItems.aspx");},
            error: function (err) { alert('Wystąpił błąd podczas wprowadzania faktury.'); console.log(err); },
            state: "Update"
        })
    }, function (error) { deferred.reject(error); });
    return deferred.promise();
}

如我之前所說,它適用於.png。

這就是你所需要的

function uploadDocument(contents, targetPath, successHandler, failedHandler) {

var fileName = getFilenameFromUrl(targetPath);
var fileNameEvidence = fileName;
var folderName = getPathFromUrl(targetPath);
var hostWebUrl = '';
var appWebUrl = '';

hostWebUrl = decodeURIComponent(getQueryStringParameter('SPHostUrl'));
appWebUrl = decodeURIComponent(getQueryStringParameter('SPAppWebUrl'));

$.getScript(hostWebUrl + "/_layouts/15/SP.RequestExecutor.js", function () {
    console.log("into upload Api Document");
    var byteArray = new Uint8Array(atob(contents).split("").map(function (c) {
        return c.charCodeAt(0);
    }));
    var fileData = '';

    for (var i = 0; i < byteArray.byteLength; i++) {
        fileData += String.fromCharCode(byteArray[i]);
    }
    var reqDocExecutor = new SP.RequestExecutor(appWebUrl);

    var _url = '';
    var contentType = "application/pdf;odata=verbose";

    var dotLocation = fileName.lastIndexOf('.');
    var extensionFile = fileName.substr(dotLocation);

    var info;
    _url = String.format("{0}/_api/sp.appcontextsite(@target)/web/GetFolderByServerRelativeUrl('{1}')/files" + "/add(overwrite=true, url='{2}')?@target='{3}'", appWebUrl, folderName, fileName, hostWebUrl);
    info = {
        url: _url,
        method: "POST",
        headers: {
            "Accept": "application/pdf; odata=verbose",
            "X-RequestDigest": $("#__REQUESTDIGEST").val()
        },
        contentType: contentType,
        processData: false,
        binaryStringRequestBody: true,
        body: fileData,
        success: function (x, y, z) {
            successHandler();
        },
        error: function (x, y, z) {
            console.log('failed to upload document');
            failedHandler();

        }
    };
    reqDocExecutor.executeAsync(info);
});

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM