首页 > 解决方案 > 如何使用 CSOM 将列表共享点列表附件复制到文档库

问题描述

如何使用 CSOM 将列表附件复制到文档库。

标签: sharepoint-2013csom

解决方案


请使用此脚本。添加要在 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);
        }

推荐阅读