这里使用jszip进行文件打包,可以创建文件夹,创建文件。然后使用FileSaver进行下载,这里使用FileSaver下载是因为这个工具可以下载大文件,而且效率非常高。一下代码示例,简单模块化了一下,为了能够上传下载文件。
'use strict';
import JsZip from 'jszip'
import { saveAs } from 'file-saver'
export class DownloadUtil {
constructor() {
this.zip = new JsZip();
}
// 添加文件到zip
addFileInZip(fileName, content, option) {
this.zip.file(fileName, content, option)
}
// 添加文件夹到zip
addFolderInZip(folderName) {
return this.zip.folder(folderName)
}
// 打包成blob(二进制数据)
packageZip2blob() {
return this.zip.generateAsync({ type: 'blob' })
}
// 打包并下载(默认打包成blob)
packageZipAndDownload(zipName, type = 'blob') {
this.zip.generateAsync({ type }).then(content => {
saveAs(content, zipName)
})
}
}