express 七牛 多文件上传

express官方给出了两个处理数据的中间件:body-parser和multer

具体可查看:https://www.expressjs.com.cn/resources/middleware.html

还有一个是 express-formidable,但是他好像和body-parser会起冲突,所以我放弃了,

我使用的是七牛的服务器直传,可参考:https://developer.qiniu.com/kodo/sdk/1289/nodejs

直接放代码:

const qiniu = require("qiniu");
const multer = require("multer");
var upload = multer({ dest: "uploads/" });

/**
 * 单上传文件
 * @route POST /api/upload/upload
 * @summary 单上传文件
 * @group uploadFile - 用户模块
 * @param {file} file.formData
 * @returns {object} msg
 * @security JWT
 */

router.post("/upload", upload.single("file"), (req, res, next) => {
  console.log(req.file);
  const fileObj = req.file;

  var formUploader = new qiniu.form_up.FormUploader(qnconfig.config);
  var putExtra = new qiniu.form_up.PutExtra();

  formUploader.putFile(
    qnconfig.uploadToken,
    fileObj.originalname,
    fileObj.path,
    putExtra,
    function (respErr, respBody, respInfo) {
      if (respErr) {
        throw respErr;
      }
      if (respInfo.statusCode == 200) {
        res
          .status(200)
          .json({
            code: "200",
            data: qnconfig.getFileUrl(respBody.key),
            msg: "图片上传成功",
          });
      } else {
        res
          .status(respInfo.statusCode)
          .json({ code: "200", data: respBody, msg: "上传失败" });
      }
    }
  );
});

下面是七牛的配置文件:

const qiniu = require('qiniu')
 
// 创建上传凭证
const accessKey = 'wwwwwwwww'    //七牛的accessKey 
const secretKey = 'eeeeeeeeeeee'    //七牛的secretKey 
const mac = new qiniu.auth.digest.Mac(accessKey, secretKey)
const options = {
    scope: 'name',         //对象存储空间名字
    expires: 7200
}
const putPolicy = new qiniu.rs.PutPolicy(options)
const uploadToken = putPolicy.uploadToken(mac)

//服务器直传
const config = new qiniu.conf.Config();
config.zone = qiniu.zone.Zone_z0;

//图片的地址
var bucketManager = new qiniu.rs.BucketManager(mac, config);
var privateBucketDomain = 'http://www.baidu.com'; //七牛中自己配置的域名地址
var deadline = parseInt(Date.now() / 1000) + 3600000; // 永不过期

const getFileUrl=(key)=>{
    return bucketManager.privateDownloadUrl(privateBucketDomain, key, deadline);

}
 
module.exports = {
    uploadToken,
    config,
    getFileUrl
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值