• nodejs 获取七牛云token, 拉取七牛云资源列表;


    const Koa = require("koa");
    const app = new Koa();
    const Router = require("koa-router");
    const Bodyparse = require("koa-bodyparser");
    const cors = require("koa2-cors");
    const router = new Router();
    let qiniu = require("qiniu");
    app.use(
      Bodyparse({
        jsonLimit: "10M",
        formLimit: "10M",
        textLimit: "10M"
      })
    ); // 处理post请求
    app.use(cors()); // 允许跨域
    
    // const accessKey = "";   //
    // const secretKey = "";
    // const bucket = "";
    
    const accessKey = "个人七牛账号里获取"; // 七牛账号
    const secretKey = "个人七牛账号里获取";
    let bucket = "创建的存储空间";
    qiniu.conf.ACCESS_KEY = accessKey;
    qiniu.conf.SECRET_KEY = secretKey;
    let imageUrl = "http://upload-z2.qiniup.com"; // 你要上传的域名
    let mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
    
    const imgdomain = "http://q7i3go8uq.bkt.clouddn.com"; //创建bucket是七牛自动分配的域名
    let options = {
      scope: bucket
    };
    let config = new qiniu.conf.Config();
    config.zone = qiniu.zone.Zone_z2;
    var bucketManager = new qiniu.rs.BucketManager(mac, config);
    let option = { limit: 20 };
    // 获取前端上传七牛云所属需要的token
    router.get("/gettoken", async (ctx, next) => {
      console.log("mac", mac);
      let options = {
        scope: bucket,
        expires: 3600 * 24
      };
      let putPolicy = new qiniu.rs.PutPolicy(options);
      let uploadToken = putPolicy.uploadToken(mac);
      if (uploadToken) {
        ctx.body = uploadToken;
      } else {
        ctx.body = "error";
      }
      await next();
    });
    //拿到数据返给前端
    router.get("/imglist", async (ctx, next) => {
      await getQiniuImg(bucket,option).then((res,reject) => {
        // res.
        ctx.body = {
          code: 200,
          data: res
        };
      });
      await next();
    });
    
    /**
     * @param {}
     *
     * */
    //获取七牛云上的资源列表的方法封装
    function getQiniuImg(bucket,limit) {
      return new Promise((resolve, reject) => {
        bucketManager.listPrefix(bucket, limit, function (respErr, respBody, respInfo) {
          if (respBody.error) {
              respErr = {"error": respBody.error, 'status': respBody.status};
          }
          if(respBody){
            resolve(respBody)
          }else {
            reject(respInfo)
          }
        });
      });
    }
    app.use(async (ctx, next) => {
      await next();
    });
    
    app.use(router.routes());
    app.use(router.allowedMethods());
    app.listen(1000);
    
    
  • 相关阅读:
    QML使用动画连续非线性改变int的取值
    QML粒子系统
    QML获取当前时间
    QML与C++混合编程
    QMLBinding
    QML图形渲染QtGraphicalEffects
    [九度][何海涛] 数组中只出现一次的数字
    [九度][何海涛] 扑克牌顺子
    [九度][何海涛] 最大子向量和
    [九度][何海涛] Move!Move!!Move!!!
  • 原文地址:https://www.cnblogs.com/kangshuishneg/p/12556287.html
Copyright © 2020-2023  润新知