javascript - 使用 JavaScript 从自定义 ASPX/HTML 网页将 .TXT 文件上传到 SharePoint
问题描述
我在 SharePoint 网站中托管了一个自定义 ASPX/HTML 网页,需要使用 JavaScript 将生成的 txt 上传到 SharePoint 网站中的特定文件夹。
流程:用户单击网页上的按钮 -> JavaScript 生成的文本文件 -> JavaScript 将文本文件上传到 SharePoint 站点文件夹
我不确定 SharePoint 文件上传方法,因为没有自定义后端可供使用。这将是正确的过程吗?
解决方案
这是一个示例代码供您参考,您可以创建一个 SharePoint 网站页面并使用脚本编辑器 Web 部件来嵌入它:
<script type="text/javascript" src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script type="text/javascript">
function uploadDocument() {
if (!window.FileReader) {
alert("This browser does not support the HTML5 File APIs");
return;
}
var element = document.getElementById("uploadInput");
var file = element.files[0];
var parts = element.value.split("\\");
var fileName = parts[parts.length - 1];
var reader = new FileReader();
reader.onload = function (e) {
addItem(e.target.result, fileName);
}
reader.onerror = function (e) {
alert(e.target.error);
}
reader.readAsArrayBuffer(file);
function addItem(buffer, fileName) {
var call = uploadDocument(buffer, fileName);
call.done(function (data, textStatus, jqXHR) {
console.log(data);
alert("File Upload Successfully");
});
call.fail(function (jqXHR, textStatus, errorThrown) {
failHandler(jqXHR, textStatus, errorThrown);
});
}
function uploadDocument(buffer, fileName) {
var url = String.format(
"{0}/_api/Web/Lists/getByTitle('Documents')/RootFolder/Files/Add(url='{1}', overwrite=true)",
_spPageContextInfo.webAbsoluteUrl, fileName);
var call = jQuery.ajax({
url: url,
type: "POST",
data: buffer,
processData: false,
headers: {
Accept: "application/json;odata=verbose",
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val()
}
});
return call;
}
function failHandler(jqXHR, textStatus, errorThrown) {
var response = JSON.parse(jqXHR.responseText);
var message = response ? response.error.message.value : textStatus;
alert("Call failed. Error: " + message);
}
}
</script>
<input type="file" id="uploadInput"/>
<input type="button" id="Upload" value="Upload" onclick="uploadDocument()"/>
推荐阅读
- python - 为什么我不能在 apply 和 pandas DateOffset 的计算中使用数据框的数字索引?
- spartacus-storefront - 如何在 Spartacus 中访问 API 调用的错误详细信息
- flutter - 如何在颤动中禁用下拉菜单
- php - 我想重新启动从数据库中获取的多个数据的 id
- c# - 用于过滤数据透视表的 OpenXML 示例?
- javascript - 比较两个无法正常工作的复杂数组
- swift - 从 Firebase 表 Swift 获取用户用户名
- google-slides-api - 是否可以在嵌入的 Google 幻灯片演示文稿中使用外部控制元素?
- reactjs - React - 当服务器上的数据发生变化但没有道具发生变化时重新渲染
- python - 将 jpype 降级到 0.6.3