美文网首页
2018-07-12【node+koa+对接七牛服务】

2018-07-12【node+koa+对接七牛服务】

作者: Curt_Sleeping | 来源:发表于2018-07-12 18:52 被阅读0次

    近期需要去临时支撑一个小后台用于上传指定包到七牛,考虑到需求较小遍直接选型了 node 来做 同时也放弃了庞大的express 使用了 koa2 来实现 后台页面偷懒就直接拉了layui的模板

    server : node
    express: koa2
    template: layui

    其实很简单 首先 直接用了koa2的脚手架

    npm install -g koa-generator

    生成项目

    koa2 test_koa

    然后进入到目录下

    npm install

    简单的服务就完成了
    http://localhost:3000/ 就可以预览了

    文章最后会直接贴上git的链接 所以这里就只写关键代码了

    /**
     *
     * @Exm Model
     * Qiniu文件上传
     * @Dmr
     * @DateTime  Mon Jul 02 2018 16:48:06 GMT+0800 (中国标准时间)
     * @Param
     *
     *      {
     *          bucket          :    // 七牛空间名
     *          filePath        :    // 文件路径
     *          access_key      :    // 七牛的accessKey
     *          secret_key      :    // 七牛的secretKey
     *          qiniuFileName   :    // 上传到服务器上的文件名
     *      }
     */
    
    
    var qiniu = require("qiniu");
    
    module.exports = function ( options ) {
    
        if ( !options.bucket && !options.qiniuFileName && !options.filePath ){
    
            console.log('请补全参数!');
            return false;
    
        }
    
        //默认参数
        options = Object.assign({
    
            bucket: '',
            filePath: '',
            qiniuFileName: ''
    
        },options);
    
    
        const accessKey = options.access_key
        const secretKey = options.secret_key
    
        //生成一个上传的凭证
        const mac = new qiniu.auth.digest.Mac(accessKey, secretKey)
    
        //设置七牛的上传空间
        const putPolicy = new qiniu.rs.PutPolicy({
            scope: options.bucket
        })
    
        //生成上传的Token
        const uploadToken = putPolicy.uploadToken(mac)
    
        //实例化config
        const config = new qiniu.conf.Config()
    
        // 空间对应的机房
        config.zone = qiniu.zone.Zone_z0
    
        const localFile = options.filePath
        const formUploader = new qiniu.form_up.FormUploader(config)
        const putExtra = new qiniu.form_up.PutExtra()
    
        // 文件上传
        return new Promise((resolved, reject) => {
            formUploader.putFile(uploadToken, options.qiniuFileName, localFile, putExtra, function (respErr, respBody, respInfo) {
                if (respErr) {
                    reject(respErr)
                }
                if (respInfo.statusCode == 200) {
                    resolved(respBody)
                } else {
                    resolved(respBody)
                }
            })
        })
    
    }
    
    

    这样就可以了 注意返回的是一个Promise

    git:https://github.com/daimingru/nodeKoa-Qiniu

    相关文章

      网友评论

          本文标题:2018-07-12【node+koa+对接七牛服务】

          本文链接:https://www.haomeiwen.com/subject/uzwrpftx.html