Search K
Appearance
Appearance
最近正好有使用JS解压和压缩zip
文件同时下载文件的需求,故此记录下来
完整代码:
import JSZip from "jszip"
import { saveAs } from 'file-saver';
async function downloadFile(){
// 创建实例
const zip = new JSZip()
// 调用responsetype为arrayBuffer的http请求,这里下载的是一个压缩好的zip文件,转化为arrayBuffer响应
let res5 = await arrayBufferHttp.get("/ladder-gateway/downLoad", {
unid: fileId,
userId: this.userId
})
// 向zip中写入下载好的压缩包
zip.loadAsync(res5).then(zip => {}).catch(error => {
this.$message.error("导出后台服务补丁失败")
})
try {
// 创建一个文件夹test并在其中创建一个demo.js,写入helloworld
zip.folder('test').file(`demo.js`, 'helloworld')
// 向已有的test文件夹中创建一个test2文件夹,并写入list.vue、add.vue、detail.vue三个文件
zip.folder('test').folder('test2').file('list.vue', 'helloworld').file('add.vue', 'helloworld').file('detail.vue', 'helloworld')
zip.generateAsync({
type: 'blob'
}).then(res => {
// 调用file-saver下载文件
saveAs(res)
})
} catch (error) {
this.$message.warning("导出失败,请稍后重试")
}
}