Nodejs 文件上传七牛(qiniu)

  "dependencies": {
    "express": "^4.18.2",
    "morgan": "^1.10.0",
    "multer": "^1.4.2",
    "qiniu": "^7.8.0",
}
$ node -v 
v18.14.2

const express = require('express');
const qiniu = require('qiniu');
const multer = require('multer');
const morgan = require('morgan');

const app = express();

// 使用 "dev" 格式的日志记录
app.use(morgan('dev'));

// 配置七牛云账号信息
const accessKey = process.env.AK;
const secretKey = process.env.SK;
const bucket = 'dywlkj-backup';

// 配置qiniu-sdk
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
const config = new qiniu.conf.Config();
// config.zone = qiniu.zone.Zone_na0;//北美
config.zone = qiniu.zone.Zone_z2;//华北
const formUploader = new qiniu.form_up.FormUploader(config);
const putExtra = new qiniu.form_up.PutExtra();

// 配置Multer
const storage = multer.memoryStorage();
const upload = multer({storage: storage});

// 处理文件上传请求
app.post('/upload', upload.single('file'), async (req, res) => {
    try {
        const file = req.file;
        const key = file.originalname;

        // 生成上传凭证
        const options = {
            scope: bucket + ":" + key
        };
        const putPolicy = new qiniu.rs.PutPolicy(options);
        const uploadToken = putPolicy.uploadToken(mac);
        const cb = function (respErr, respBody, respInfo) {
            if (respErr) {
                console.error(respErr);
                res.status(500).json({error: respErr.message});
            } else if (respInfo.statusCode === 200) {
                console.log('File.js uploaded successfully:', respBody.key);
                res.json({ url: respBody.key });
            } else {
                console.error(`Failed to upload file. Status code: ${respInfo.statusCode}`);
                res.status(500).json({error: `Failed to upload file. Status code: ${respInfo.statusCode}`});
            }
        }
        // 上传文件到七牛云
        formUploader.put(uploadToken, key, file.buffer, putExtra, cb);

    } catch (err) {
        console.error(err);
        // 返回错误信息
        res.status(500).json({error: err.message});
    }
});

app.listen(3000, () => {
    console.log('Server started on port 3000');
});