1

如何使用 Jsom 和 jzip 库从文档库中压缩和下载所有文件(保持文件夹结构)?**下载多个文件,然后使用 JSZip 和 JSZip-utils 压缩到一个 zip 文件 ** 在多个文件夹中生成一个包含多个文件的单个 zip。从下面的代码中,我可以为文档库中的每个文件夹生成每个 zip想要所有文件夹的单个 zip

var folderUrl="";
for(var i=1;i<array_fldrname.length;i++)
{
    folderUrl= '/Documents/'+array_fldrname[i];
    loadFiles(folderUrl,function(files){
        var zip = new JSZip(); 
        zipFiles(zip,files,0,function(content){
            console.log('Done.');
            saveAs(content, "archive.zip"); 
        });
    },
    function(sender,args)
    {
        console.log(args.get_message());
    });
}

function zipFiles(zip,files,index,complete){
    index = index || 0;
    var curFile = files.get_item(index);
    JSZipUtils.getBinaryContent(curFile.get_serverRelativeUrl(), function (err, data) {
       if(err) {
           throw err; // or handle the error
       }
       zip.file(curFile.get_name(), data, {binary:true}); 
       index++;
       if(index < files.get_count()) {
         zipFiles(zip,files,index,complete);
       }  
       else {
         zip.generateAsync({type:"blob"})
         .then(function(content) {
              complete(content);
         });  
       }       
    });
}


function loadFiles(folderUrl,success,error){
   var ctx = SP.ClientContext.get_current();
   var web = ctx.get_web();
   var folder = web.getFolderByServerRelativeUrl(folderUrl);
   var files = folder.get_files();
   ctx.load(files);
   ctx.executeQueryAsync(
        function() {
           success(files);          
        },
        error); 
}

4

0 回答 0