使用七牛的问题,你们遇到过吗
发布于 2 年前 作者 yujintang 2814 次浏览 来自 问答

使用七牛上传,遇到这个问题

/**
 * Created by yujintang on 2017/2/14.
 */
'use strict';

module.exports = function () {

    const cfg_qiniu = global.config.qiniu;
    const qiniu = require('qiniu');
    qiniu.conf.ACCESS_KEY = cfg_qiniu.AK;
    qiniu.conf.SECRET_KEY = cfg_qiniu.SK;
    let bucket = cfg_qiniu.bucket;

    let qn = {};

    /**
     * key: 上传到七牛上的文件名,
     * filePath: 要上传的本地路径
     */
    qn.upload = function (key, filePath, type) {

        //构建上传策略函数,设置回调的url以及需要回调给业务服务器的数据
        function uptoken(bucket, key) {
            var putPolicy = new qiniu.rs.PutPolicy(bucket + ":" + key);

            let fops = void 0;
            switch (type){
                case 'avatar':
                    fops = cfg_qiniu.avatar_style;
                    break;
                default:
                    fops = '';
                    break;
            }
            let saveas_key = qiniu.util.urlsafeBase64Encode(bucket+':'+key);
            fops = fops+'|saveas/'+saveas_key;
            putPolicy.persistentOps = fops
            return putPolicy.token();
        }

        //生成上传 Token
        let token = uptoken(bucket, key);

        //构造上传函数
        function uploadFile(uptoken, key, localFile) {
            var extra = new qiniu.io.PutExtra();
            qiniu.io.putFile(uptoken, key, localFile, extra);
        }

        //调用uploadFile上传
        uploadFile(token, key, filePath);
    };
    return qn;
}();

运行时候会报这个错误:

[2017-02-21 00:01:15.177] [ERROR] system - uncaughtException from process TypeError: onresp is not a function
    at /Users/yujintang/work/quhui/quehui_server/node_modules/qiniu/qiniu/rpc.js:57:5
    at done (/Users/yujintang/work/quhui/quehui_server/node_modules/urllib/lib/urllib.js:193:5)
    at IncomingMessage.<anonymous> (/Users/yujintang/work/quhui/quehui_server/node_modules/urllib/lib/urllib.js:304:7)
    at emitNone (events.js:91:20)
    at IncomingMessage.emit (events.js:186:7)
    at endReadableNT (_stream_readable.js:974:12)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)
2 回复

我这里也有一个七牛上传的代码 https://github.com/bimohxh/webon/blob/master/lib/qiniu.js 也是用的 qiniu 这个包,上传没问题,可以参考一下

@hxh1246996371 我那边就是七牛不支持promise,putFile 后面缺少一个回调函数,造成的报错

回到顶部