描述
前端做文件的打包下载,一般使用Jszip或者zipjs,我选择的是jszip,后面发现使用windows自带的资源管理器打开使用jszip打成的压缩包,显示为空,但是使用压缩包工具解压缩后又可以看到完整的文件,经过一天的尝试发现了问题,做个记录。
问题记录
const zip = new JSZip();
//在根目录下生成一个test文件夹
zip.folder("/test");
//zip.folder("test")也可以
//在test文件夹写进去一个图片.png,imgData是通过get请求获取到的资源
zip.file("/test/图片.png", imgData, {base64: true});
zip.generateAsync({type:"blob"}).then(function(content) {
saveAs(content, "example.zip");
});
最开始这么写,可以实现图片的打包下载,但是windows自带的资源管理器打开使用jszip打成的压缩包,显示为空。
解决方案
//写入文件的时候,将
zip.file("/test/图片.png", imgData, {base64: true});
//修改成
zip.file("test/图片.png", imgData, {base64: true})即可
其他的总结
1.zip.js可以处理超过4G的文件,jszip处理不能超过4G的文件
2.后端做文件打包下载使用函数计划,服务器打包返回一个资源地址