实现成功批量上传3000+图片文件,上传之后由于存在缓存,需要手动在七牛云刷新该文件目录即可
const qiniu = require('qiniu');
const fs = require('fs');
const path = require('path');

// 七牛云配置
const accessKey = 'accessKey';
const secretKey = 'secretKey-fNH9FejVul';
const bucket = 'upload'; // 七牛云存储空间名
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
const config = new qiniu.conf.Config();
config.zone = qiniu.zone.Zone_z1; // 选择对应的存储区域
const formUploader = new qiniu.form_up.FormUploader(config);
const putExtra = new qiniu.form_up.PutExtra();
// 生成上传 Token
function uploadToken(bucket, key) {
const putPolicy = new qiniu.rs.PutPolicy({ scope: `${bucket}:${key}` });
return putPolicy.uploadToken(mac);
}
// 上传单个文件到七牛云
function uploadFile(localFile, key) {
console.log(localFile)
console.log(key)
return new Promise((resolve, reject) => {
const token = uploadToken(bucket, key);
formUploader.putFile(token, key, localFile, putExtra, (err, body, info) => {
if (err) {
reject(err);
return;
}
if (info.statusCode === 200) {
resolve(body);
} else {
reject(new Error(`上传失败: ${info.statusCode}`));
}
});
});
}
// 读取并上传images目录下的所有文件
async function uploadImagesSequentially() {
try {
const files = fs.readdirSync('./images');
for (const file of files) {
console.log(`开始上传文件: ${file}`);
await uploadFile(`./images/${file}`, file);
console.log(`${file} 上传成功`);
}
console.log('所有文件上传完毕');
} catch (err) {
console.error('上传过程中出错:', err);
}
}
// 启动上传流程
uploadImagesSequentially();