sharepoint-2013 - 如何使用 CSOM 将列表共享点列表附件复制到文档库
问题描述
如何使用 CSOM 将列表附件复制到文档库。
解决方案
请使用此脚本。添加要在 Items Array 中复制的项目 ID 作为 [id1,id2] 并将您的库名称重命名为“PictureLibrary”,并将文件夹路径列表名称替换为“test”
function CopyAtt(Items, itemIndex) {
try {
myContext = new SP.ClientContext.get_current();
var myWeb = myContext.get_site().get_rootWeb();
var folderPath = 'Lists/test/Attachments/' + Items[itemIndex];
var Folder = myWeb.getFolderByServerRelativeUrl(folderPath);
Files = Folder.get_files();
myContext.load(Files);
myContext.executeQueryAsync(Function.createDelegate(
this, ExecuteLoadFileSuccess(Items, itemIndex);),
Function.createDelegate(
this, GetLeadsFail));
}
catch (err) {
alert(err.Line);
}
}
function GetLeadsFail(sender, args) {
// Show error message
alert('Request failed - ' + args.get_message());
}
function ExecuteLoadFileSuccess(Items, itemIndex, sender, args) {
for (var p = 0; p < this.Files.get_count(); p++) {
var file = Files.itemAt(p);
var filename = file.get_name();
}
if (filename != null) {
var newUrl = 'PictureLibrary/' + filename;
file.copyTo(newUrl, true);
myContext.executeQueryAsync(Function.createDelegate(
this, function(){ExecuteCopyOnSuccess(Items, itemIndex);}),
Function.createDelegate(
this, GetLeadsFail));
}
}
function ExecuteCopyOnSuccess(Items, itemIndex, sender, args) {
//Call CopyAtt() after copy files success.
if (itemIndex <Items.length-1) {
CopyAtt(Items, itemIndex+1);
}
}
$(document).ready(function() {
//save all Items ID in an array.
var Items = [2,3,6,7,8,10];
CopyAtt(Items, 0);
}
推荐阅读
- cefsharp - 我可以在 CefSharp 中加载第 3 方插件/扩展吗?
- sql - 如何对按顺序排列的相同值进行分组
- facebook-graph-api - 是否可以使用 Graph API for v4.0 或更高版本发送和获取 Facebook 消息?
- r - 通过应用缺失值调用均值和中值函数的不同结果
- c# - Automapper:将此设置为属性
- javascript - 问题 - 反应组件状态中的可选字段
- webpack - Webpack 字体在构建时在错误的目录中查找
- android - 我有来自 geojson 的多个地图图层。需要从每一个中获取一个点击事件
- javascript - 如何使用来自 JS 的两个 ID?
- reactjs - React - 文件夹结构