七牛云批量上传覆盖同名文件Node.js

75 阅读1分钟

实现成功批量上传3000+图片文件,上传之后由于存在缓存,需要手动在七牛云刷新该文件目录即可

image.png

const qiniu = require('qiniu');
const fs = require('fs');
const path = require('path');

![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2de1d481c5f04621840afe823fd1c9ba~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1326&h=521&s=705566&e=png&b=1a63e1)
// 七牛云配置
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();