zoukankan      html  css  js  c++  java
  • 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);
    
    
  • 相关阅读:
    C++相关资料
    OpenCV相关资料参考
    QT-undefined reference to vtable
    QToolButton弹出菜单
    QT-信号和槽机制
    了解字符集和编码
    apache配置Directory目录权限的一些配置
    linux用户(组)及文件权限说明
    Linux下重要日志文件及查看方式
    四种常见的 POST 提交数据方式
  • 原文地址:https://www.cnblogs.com/kangshuishneg/p/12556287.html
Copyright © 2011-2022 走看看