前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >React引入jszip实现多个文件打包成zip下载

React引入jszip实现多个文件打包成zip下载

作者头像
明知山
发布2022-05-05 20:16:53
发布2022-05-05 20:16:53
2.7K00
代码可运行
举报
文章被收录于专栏:前端开发随笔前端开发随笔
运行总次数:0
代码可运行

jszip文档 安装两个插件

代码语言:javascript
代码运行次数:0
运行
复制
yarn add jszip file-saver

可直接复制查看效果

代码语言:javascript
代码运行次数:0
运行
复制
import JSZip from 'jszip'
import { saveAs } from 'file-saver'
export default () => {
    //通过请求获取文件blob格式
    function getFileBlob(url) {
        return new Promise((resolve, reject) => {
            let request = new XMLHttpRequest()
            request.open("GET", url, true)
            request.responseType = "blob"
            request.onload = (res) => {
                if (res.target.status == 200) {
                    resolve(res.target.response)
                } else {
                    reject(res)
                }
            }
            request.send()
        })
    }

    const downLoad = () => {
        const zip = new JSZip()
        let result = []
        let files = [
            "https://im-1305783521.cos.ap-guangzhou.myqcloud.com/im/file/C13012345678/1645261335302/测试文档.doc",
            "https://im-1305783521.cos.ap-guangzhou.myqcloud.com/im/file/lilinjian/1641631041478/dd.txt",
            "https://im-1305783521.cos.ap-guangzhou.myqcloud.com/im/file/C13012345678/1650420333942/123.xls",
            "https://im-1305783521.cos.ap-guangzhou.myqcloud.com/im/file/C13012345678/1641805597561/巴达兽.png"
        ]
        for (let i in files) {
            let promise = getFileBlob(files[i]).then((res) => {
                let format = files[i].substring(files[i].lastIndexOf("."), files[i].length)
                zip.file(i + format, res, { binary: true })
            })
            result.push(promise)
        }
        Promise.all(result).then(() => {
            zip.generateAsync({ type: "blob" }).then((res) => {
                saveAs(res, "文件.zip")
            })
        })
    }

    return (
        <button onClick={() => downLoad()}>下载多个文件</button>
    )
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档