JS|nodeJs实现下载zip压缩包,解压并保存到指定路径
实现引入包
demo业务场景
demo实现代码
// import JSZip from "jszip";
// import axios from "axios";
// import path from "path";
// import fs from "fs";
const JSZip = require("jszip");
const axios = require("axios");
const path = require('path');
const fs = require("fs");
const downloadZip = async (url) => {
// 使用axios获取zip文件的数据
const { data } = await axios.get(url, {
responseType: "arraybuffer",
});
// 返回zip文件数据
return data;
};
const unzip = async (zipData) => {
// 使用jszip将zip文件转换成对象
const zip = await JSZip.loadAsync(zipData);
// 使用Promise.all方法,获取zip文件中的内容
const files = await Promise.all(
Object.keys(zip.files).map(async (filename) => {
const file = zip.files[filename];
const content = await file.async("nodebuffer");
// 返回文件对象
return {
filename,
content,
};
})
);
// 返回文件对象数组
return files;
};
const installPlugin = async (pluginUrl) => {
let fileData = await downloadZip(pluginUrl);
let filepath = await unzip(fileData);
let FilePath = filepath.filter(
(item) => !item.filename.endsWith("/")
);
// 上传文件夹文件
FilePath.forEach((item) => {
if (!item.filename.endsWith("/")) {
let targetPathFile = path.resolve(__dirname, `../../test/${item.filename}`)
let index = item.filename.lastIndexOf("/")
if(index !== -1 && !fs.existsSync(path.resolve(__dirname, `../../test/${item.filename.slice(0, index)}/`))) {
let targteFile = path.resolve(__dirname, `../../test/${item.filename.slice(0, index)}/`);
// 创建对应目录
fs.mkdirSync(targteFile, {
recursive: true,
});
}
fs.writeFileSync(targetPathFile, item.content);
}
});
};
installPlugin("https://bm压缩包路径/dist.zip");
demo实现效果
初始条件
代码执行后效果
注意事项
放松一下吧
原文地址:https://blog.csdn.net/m0_51126511/article/details/128985834
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_18677.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。