2018-07-12【node+koa+對接七牛服務(wù)】

近期需要去臨時支撐一個小后臺用于上傳指定包到七牛,考慮到需求較小遍直接選型了 node 來做 同時也放棄了龐大的express 使用了 koa2 來實現(xiàn) 后臺頁面偷懶就直接拉了layui的模板

server : node
express: koa2
template: layui

其實很簡單 首先 直接用了koa2的腳手架

npm install -g koa-generator

生成項目

koa2 test_koa

然后進(jìn)入到目錄下

npm install

簡單的服務(wù)就完成了
http://localhost:3000/ 就可以預(yù)覽了

文章最后會直接貼上git的鏈接 所以這里就只寫關(guān)鍵代碼了

/**
 *
 * @Exm Model
 * Qiniu文件上傳
 * @Dmr
 * @DateTime  Mon Jul 02 2018 16:48:06 GMT+0800 (中國標(biāo)準(zhǔn)時間)
 * @Param
 *
 *      {
 *          bucket          :    // 七??臻g名
 *          filePath        :    // 文件路徑
 *          access_key      :    // 七牛的accessKey
 *          secret_key      :    // 七牛的secretKey
 *          qiniuFileName   :    // 上傳到服務(wù)器上的文件名
 *      }
 */


var qiniu = require("qiniu");

module.exports = function ( options ) {

    if ( !options.bucket && !options.qiniuFileName && !options.filePath ){

        console.log('請補(bǔ)全參數(shù)!');
        return false;

    }

    //默認(rèn)參數(shù)
    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)

    //設(shè)置七牛的上傳空間
    const putPolicy = new qiniu.rs.PutPolicy({
        scope: options.bucket
    })

    //生成上傳的Token
    const uploadToken = putPolicy.uploadToken(mac)

    //實例化config
    const config = new qiniu.conf.Config()

    // 空間對應(yīng)的機(jī)房
    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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容