压缩文档下载多个文件,然后压缩到一个zip

时间:2017-01-25 04:09:06

标签: download zip jszip sharepoint-jsom

如何使用Jsom和jzip Library从文档库中压缩和下载所有文件(保留文件夹结构)? **下载多个文件,然后使用JSZip&压缩到一个zip文件。 JSZip-utils ** 从多个文件夹中生成一个包含多个文件的单个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); 
}

0 个答案:

没有答案