zoukankan      html  css  js  c++  java
  • 在node中使用promise上传图片到七牛云

    为了分摊个人服务器压力、提升图片下载上传的速度,使用七牛云保存用户上传的图片。

    后台基于express搭建的,上传使用七牛云第三方nodejs-sdk。由于七牛云上传图片只能单个进行,并且考虑到上传完成后会做一些事情,于是基于sdk再次封装了一次,代码如下:

    let qn = require('qn');
    let path = require('path');
    // 本地文件路径
    let filePaths = ['./public/images/33.jpg', './public/images/1.jpg'];
    
    let client = qn.create({
        accessKey: 'ZfEZGc8IWw_WvLNYa8-J6LCHRifl8Y0Tmz1FOyg3',
        secretKey: 'Y1sMVB-xUbyyrBfCdg1aH0zXY6p2ADTkz7OFLoCk',
        bucket: 'fayinme',  // 在七牛云创建的空间名字
        origin: 'opo2yekqx.bkt.clouddn.com',    // 使用测试域名
    });
    
    let qiniuUpload = (filePaths) => {
        // map()方法返回新的 promise对象数组,
        // 若使用forEach(),报错:Cannot read property 'Symbol(Symbol.iterator)' of undefined
        // 因为没有返回值,运行到 return Promise.all(qiniuPromise) 时会返回 undefinded
    
        let qiniuPromise = filePaths.map(filePath => {
    
            // key 为上传到七牛云后自定义图片的名称
            return new Promise((resolve, reject) => {
                let fileName = path.win32.basename(filePath);
                client.uploadFile(filePath, {key: fileName}, function (err, result) {
                    if(err) {
                        reject(err);
                    }else {
                        resolve(result);
                    }
                });
            });
        });
    
        return Promise.all(qiniuPromise);
    
    };
    
    // 调用函数
    qiniuUpload(filePaths).then(res => console.log(res));
    
    

    注释:
    1、npm install --save qn安装 qn 模块后require

    2、封装 qiniuUpload 函数,通过七牛云上传后返回一个 promise 对象

    • 2.1 client.uploadFile(filePath, {key: fileName}, callback)
    • filePath: 图片在本地的路径。
    • fileName:上传到七牛云后自定义的图片名字,本例使用原图片名称。
    • callback:成功后的回调。

    3、调用 qiniuUpload 函数,打印结果

  • 相关阅读:
    2019.7.28刷题统计
    2019.7.27刷题统计
    2019.7.26刷题统计
    2019.7.22刷题统计
    qdoj.xyz 6.18
    qdoj.xyz 6.17
    qdoj.xyz 6.16
    qdoj.xyz 6.15
    qdoj.xyz 6.14
    qdoj.xyz 6.13
  • 原文地址:https://www.cnblogs.com/fayin/p/6855922.html
Copyright © 2011-2022 走看看