我看到这个问题的其他版本没有提供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));
}
});
}
});
}
使用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库,因为它是第三方库,并且该库中可用的大多数功能都在RESTapi中可用。