首页 > 解决方案 > 使用 JS FileReader API 读取 Sharepoint 文档库文件

问题描述

我看到这个问题的其他版本不提供 Javascript 解决方案。有人可以为此创建一个吗?我正用头撞墙,试图让它发挥作用。

所以我的总体范围是复制一个文件,然后将它放在另一个文档库中,但是我在读取文件时遇到了麻烦。这是我迄今为止最好的尝试...

function createAPinSPListOld(name,system,start,duration) {

    var binary = "";   
    var srcUrl = can't show this;
    var destURL = can't show this either; 

    // create metadata
    var data = { 
        __metadata: {'type': 'SP.Data.NXE_x0020_AP_x0020_TrackerItem'},
        System: system,
        Planned_x0020_Start: start,
        Required_x0020_Time_x0020__x0028_hrs_x0029_: duration,
    };

    $().SPServices({
        operation: "GetItem",
        Url: srcUrl,
        completefunc: function (xData, Status) {                    
            binary = $(xData.responseXML).find("Stream").text(); 
            console.log(xData);                                      
            console.log(binary);                                      
            // create item in SP list
            $.ajax({
                url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('NXE Action Plan Tracker')/rootfolder/files/add(url="+name+",overwrite=true)",
                type: "POST",
                body: binary,
                headers: {
                    "accept": "application/json;odata=verbose",
                    "X-RequestDigest": $("#__REQUESTDIGEST").val(),
                    "content-type": "application/json;odata=verbose",
                    "content-length":500000
                },
                data: JSON.stringify(data),
                success: function (data) {
                    console.log("Created successfully!")
                },
                error: function (error) {
                    alert("cannot add for some reason");
                    alert(JSON.stringify(error));
                }
            }); 
        }
    });
}

标签: javascriptsharepointfilereadersharepoint-onlinespservices

解决方案


通过使用以下函数,使用 xhr 将文档读入字节数组:

function ReadDocument(documentUrl) {
        try {
            if (documentUrl) {
                    var xhr = new XMLHttpRequest();
                    xhr.onreadystatechange = function (data) {
                        if (this.readyState == 4 && this.status == 200) {
							var fileData = this.response;
                        }
                    }
                    xhr.open('GET', documentUrl, true);
                    xhr.responseType = 'blob';
                    xhr.send();
            }
        } catch (e) {
            console.log(e);
        }
    }

另外我建议不要使用 SPService 库,因为它是第三方库,并且该库中可用的大部分功能都可在 REST api 中使用。


推荐阅读