Sharepoint通过SP REST API上传.PDF

时间:2017-08-30 11:33:36

标签: javascript jquery sharepoint

我有一个功能,即将文件上传到列表项。一切都在为.png工作,但是当我试图上传.pdf时,我有错误net::ERR_CONNECTION_RESET

错误对象的屏幕:

error

我的代码:

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。

1 个答案:

答案 0 :(得分:0)

这就是你需要的

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

}