因为公司业务需求,需要大量的重复点击上传文件操作,人工做操作又慢又容易出错,所以自己写了一个node脚本,可一键批量创建文件夹,复制指定目录文件进去,批量打包和批量上传文件。
代码地址git
代码中遇到的问题
- 用request提交application/json请求
- 创建多层文件目录(a/b/c)
- 利用fs拷贝文件
- 把文件压缩成zip
用request提交application/json请求
在页面上显示是这样的提交
var options = {
'method': 'POST',
'url': 'https://www.apicloud.com/api2/upload',
'headers': {
'Host': 'www.apicloud.com',
'Referer': 'https://www.apicloud.com/restore',
'Cookie': ''
},
formData:{
file:fs.createReadStream(`./widget.zip`),
type:'application/x-zip-compressed',
name:'widget.zip',
upload_type:'zip/ver'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(JSON.parse(response.body));
});
创建多层文件目录(a/b/c)
function mkdirsSync(dirname) {
if (fs.existsSync(dirname)) {
return true;
} else {
if (mkdirsSync(path.dirname(dirname))) {
fs.mkdirSync(dirname);
return true;
}
}
}
拷贝文件
function copyFile(src, dist) {
try{
fs.writeFileSync(dist, fs.readFileSync(src));
}catch(e){
console.log('暂无')
}
}
把文件压缩成zip
安装compressing
cnpm i compressing --save
var compressing = require("compressing");
//文件地址 和 输出文件
compressing.zip.compressDir('./widget', './widget.zip')