七牛云v7版本文件上传

七牛云v7版本文件上传

前言

🌈 官方文档

安装

npm install qiniu@7.7.0

目前最新是v7,看文档的时候⚠️请注意sdk的版本,因为不同版本的配置和步骤不一样

使用

这里的用例使用了egg作为示例,主要的核心方法是qiNiuUpload方法

'use strict';

const Controller = require('egg').Controller;

// 导入七牛云sdk
const qiniu = require('qiniu');

class HomeController extends Controller {
  async index() {
    const { ctx } = this;

    const file = ctx.request.files[0];

    const res = await this.qiNiuUpload(file);
    console.log(res);

    ctx.body = ('hi, egg');
  }

  qiNiuUpload(file) {
    return new Promise((resolve, reject) => {

      // 获取【文件名】【文件路径】
      const { filename: fileName, filepath: filePath } = file;

      // 配置【accessKey, secretKey, bucket】
      const accessKey = '七牛云accessKey';
      const secretKey = '七牛云secretKey';
      const bucket = '七牛云存储桶名称';

      // 获取鉴权对象mac
      const mac = new qiniu.auth.digest.Mac(accessKey, secretKey);

      // 获取上传凭证
      const putPolicy = new qiniu.rs.PutPolicy({ scope: bucket });

      // 获取上传token
      const uploadToken = putPolicy.uploadToken(mac);

      // 上传文件之前,必须要构建一个上传用的config对象
      const config = new qiniu.conf.Config();

      // 空间对应的机房 => 华东-浙江:z0 || 华东-浙江2:cn-east-2 || 华北-河北:z1 || 华南-广东:z2 || 北美-洛杉矶:na0 || 亚太-新加坡(原东南亚):as0 || 亚太-首尔:ap-northeast-1
      // [官方文档](https://developer.qiniu.com/kodo/1671/region-endpoint-fq)
      config.zone = qiniu.zone.Zone_z0;

      const formUploader = new qiniu.form_up.FormUploader(config);

      const putExtra = new qiniu.form_up.PutExtra();

      // 文件上传
      formUploader.putFile(uploadToken, fileName, filePath, putExtra, (err, ret) => {
        if (!err) {
          // 上传成功, 处理返回值
          // console.log(ret.hash, ret.key);

          resolve(ret);
        } else {
          // 上传失败, 处理返回代码
          // console.log(err);

          reject(err);
        }
      });
    });
  }

}

module.exports = HomeController;
提示

在实际的生产环境中,我们一般还需要:

  • 处理文件名
  • 校验文件类型
  • 校验文件大小
  • 上传后回调的是文件名,需要手动拼接请求url再返回给前端

docker镜像

chenbz777/qiniu_upload

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值