如何在站点和子站点之间使用Sharepoint 2013中的Rest API和javascript复制文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在站点和子站点之间使用Sharepoint 2013中的Rest API和javascript复制文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2462字,纯文字阅读大概需要4分钟。
内容图文
![如何在站点和子站点之间使用Sharepoint 2013中的Rest API和javascript复制文件](/upload/InfoBanner/zyjiaocheng/677/8586fb055ca44155842a3221d017b7c4.jpg)
我需要在文档库之间复制文件.库A位于一个站点中,而库B位于子站点中.我知道如何在同一级别的库之间复制文件,但是问题是在不同级别之间进行复制.
我用来在同一级别的库之间复制文件的代码.
$.ajax({
url : "http://xxx/PWA/_api/web/folders/GetByUrl('/PWA/CopyFromLibrary')/Files/getbyurl('Import.csv')/copyTo(strNewUrl = '/PWA/TargetLibrary/Import.csv',bOverWrite = true)",
method: 'POST',
headers: {
"Accept": "application/json; odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
success: function () {
alert("Success! Your file was copied properly");
},
error: function () {
alert("Problem with copying");
}
});
对于不同级别,我仅使用另一个目标URL:
url : "http://xxx/PWA/_api/web/folders/GetByUrl('/PWA/CopyFromLibrary')/Files/getbyurl('Import.csv')/copyTo(strNewUrl = '/PWA/Subsite/TargetLibrary/Import.csv',bOverWrite = true)",
而且它不起作用.
如何解决此问题?
解决方法:
刚刚在跨站点解决方案中找到了这个解决方案.诀窍是-不要使用$.ajax下载文档.使用良好的旧XMLHttpRequest.原因是JQuery根本不允许您从SharePoint获取原始二进制数据数组.但是,XMLHttpRequest这样做是因为它允许您将数组缓冲区作为其实现的一部分,SharePoint可以接受它!
以下是代码,其中包含确定用于构建完整源和目标REST URL的部分的代码.请注意,您可以使用$.ajax上传文件.
> sourceSite是一个适合附加’_api’其余端点的共享点站点
> sourceFolderPath是文档所在的相对文件夹路径
> sourceFileName是文档的文件名
> targetSite,targetFolderPath和targetFileName是镜像或源,仅用于目标.
> requestDigest是SharePoint接受更新所需的特殊值.
function copyDocument(sourceSite, sourceFolderPath, sourceFileName, targetSite, targetFolderPath, targetFileName, requestDigest) {
var sourceSiteUrl = sourceSite + "_api/web/GetFolderByServerRelativeUrl('" + sourceFolderPath + "')/Files('" + sourceFileName + "')/$value";
var targetSiteUrl = targetSite + "_api/web/GetFolderByServerRelativeUrl('" + targetFolderPath + "')/Files/Add(url='" + targetFileName + "',overwrite=true)";
var xhr = new XMLHttpRequest();
xhr.open('GET', sourceSiteUrl, true);
xhr.setRequestHeader('binaryStringResponseBody', true);
xhr.responseType = 'arraybuffer';
xhr.onload = function (e) {
if (this.status == 200) {
var arrayBuffer = this.response;
$.ajax({
url: targetSiteUrl,
method: 'POST',
data: arrayBuffer,
processData: false,
headers: { 'binaryStringRequestBody': 'true', 'Accept': 'application/json;odata=verbose;charset=utf-8', 'X-RequestDigest': requestDigest }
})
.done(function (postData) {
console.log('we did it!');
})
.fail(function (jqXHR, errorText) {
console.log('dadgummit');
});
}
}
xhr.send();
}
内容总结
以上是互联网集市为您收集整理的如何在站点和子站点之间使用Sharepoint 2013中的Rest API和javascript复制文件全部内容,希望文章能够帮你解决如何在站点和子站点之间使用Sharepoint 2013中的Rest API和javascript复制文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。