javascript - 使用 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));
}
});
}
});
}
解决方案
通过使用以下函数,使用 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 中使用。
推荐阅读
- r-markdown - 执行当前 Rmarkdown 块并移动到 RStudio 中的下一个块
- ios - 实例成员“....”不能用于类型“CustomTextField”;你的意思是使用这种类型的值吗?
- laravel - 如何在 laravel 中正确实现 CRUD json 字段
- angular - 我需要根据用户选择有条件地渲染一个角度组件
- javascript - Jest helper-module-transforms 无法读取未定义的属性“值”
- android - 解决 Android API 29+ 上 EnterText 问题的扩展方法
- sql - 使用子查询的笛卡尔积的 SQL 比较报告
- python - 在 Parquet 中使用 Dask 日期/时间戳列存储
- google-sheets-formula - 如何为更新添加数组公式
- firebase - 使用 Google/Apple 等注册后使用电子邮件登录 Firebase