@adtkcn/hb-cli
Version:
用于uniapp的打包工具,可切换环境变量、可多配置,切换证书,更改版本,wifi调试
125 lines (112 loc) • 3.82 kB
JavaScript
// const axios = require("axios");
// const FormData = require("form-data");
const fs = require("fs");
const path = require("path");
/**
* 上传文件
* @param {*} uploadUrl 上传路径
* @param {*} fileUrl 文件路径
* @param {*} data post的数据
*/
// async function upload(uploadUrl, fileUrl, data) {
// console.log("准备上传文件");
// let formData = new FormData();
// let fileData = fs.createReadStream(fileUrl); // 根目录下需要有一个test.jpg文件
// if (data && typeof data == "object") {
// for (const key in data) {
// if (Object.hasOwnProperty.call(data, key)) {
// const val = data[key];
// formData.append(key, val);
// }
// }
// }
// formData.append("file", fileData);
// return new Promise((resolve, reject) => {
// axios({
// url: uploadUrl,
// method: "POST",
// data: formData,
// // headers: formData.getHeaders(),
// maxContentLength: `Infinity`,
// maxBodyLength: `Infinity`,
// onUploadProgress(progressEvent) {
// // console.log("progressEvent", progressEvent);
// if (progressEvent.lengthComputable) {
// //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
// //如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
// let upLoadProgress = (progressEvent.loaded / progressEvent.total) * 100; //实时获取上传进度
// console.log(
// upLoadProgress + "%",
// progressEvent.loaded,
// progressEvent.total
// );
// }
// },
// })
// .then((res) => {
// console.log("上传文件返回", res.data);
// resolve();
// })
// .catch((err) => {
// console.log("上传文件失败", err.message);
// reject(err);
// });
// });
// }
/**
*
* @param {string} url app资源地址
* @param {string} filepath 文件下载的本地目录
* @param {string} name 文件名称
* @returns 本地文件路径名称
*/
async function downloadFile(url, filepath, name) {
console.log("准备下载文件", url);
if (!fs.existsSync(filepath)) {
fs.mkdirSync(filepath, { recursive: true });
}
const savePath = path.join(filepath, name);
// 替换axios实现
const http = url.startsWith('https') ? require('https') : require('http');
return new Promise((resolve, reject) => {
http.get(url, (response) => {
if (response.statusCode !== 200) {
reject(`服务器返回异常状态码: ${response.statusCode}`);
return;
}
const writer = fs.createWriteStream(savePath);
response.pipe(writer);
writer.on('finish', () => {
console.log("下载完成");
writer.end();
resolve(savePath);
});
writer.on('error', (err) => {
writer.end();
console.log("下载失败");
reject(err);
});
}).on('error', (err) => {
console.log("请求失败");
reject(err);
});
});
}
// downloadFile(
// "https://ide.dcloud.net.cn/build/download/2f6a4090-3c08-11ed-a02d-992ce364be7a",
// "./ios/app/ipa",
// Date.now() + ".ipa"
// );
// downloadFile(
// "http://img.ithome.com/newsuploadfiles/2025/4/6da8713f-35a8-476e-826c-c6951cdaf3a3.png?x-bce-process=image/format,f_avif",
// "./.hbuilderx",
// Date.now() + ".png"
// );
// upload(
// "http://127.0.0.1:1080/api/file/upload",
// "F:\\ShouGang\\nfcManage\\NFC\\unpackage\\release\\apk\\__UNI__D8AA064__20220924174752.apk"
// );
module.exports = {
// upload,
downloadFile,
};