美文网首页
node+express 实现阿里云OSS图片上传

node+express 实现阿里云OSS图片上传

作者: 彬彬彬boboc | 来源:发表于2019-01-23 14:19 被阅读0次

    由于SDK基于ES6开发,使用了Generator Function使得用户能够方便地用同步的方式异步的代码,需要配合co使用。具体可参考这篇博客。使用同步方式还需要安装co。这里方式同上。

    // 初始化Client

    var co = require('co');  

    var OSS = require('ali-oss');

    var client = new OSS({

      region: 'oss-cn-shanghai',

      accessKeyId: '<Your AccessKeyId>',

      accessKeySecret: '<Your AccessKeySecret>',

      bucket: '<Your bucket name>'

    });

    var ali_oss = {

        bucket: '<Your bucket name>',

        endPoint: 'oss-cn-shanghai.aliyuncs.com',

    }

    router.post('/addimgfile', function(req, res, next){

        // console.log(req.body.imgfiles);

        // 图片数据流

        var imgData = req.body.imgfiles;

        // 构建图片名

        var fileName = Date.now() + '.png';

        // 构建图片路径

        var filePath = './tmp/' + fileName;

        //过滤data:URL

        var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");

        var dataBuffer = new Buffer(base64Data, 'base64');

        fs.writeFile(filePath, dataBuffer, function(err) {

            if(err){

              res.end(JSON.stringify({status:'102',msg:'文件写入失败'}));

            }else{

                var localFile = filePath;

                var key = fileName;

                // 阿里云 上传文件

                co(function* () {

                  client.useBucket(ali_oss.bucket);

                  var result = yield client.put(key, filePath);

                  var imageSrc = 'http://images-funcode.oss-cn-beijing.aliyuncs.com/' + result.name;

            //    上传之后删除本地文件         

                  fs.unlinkSync(filePath); 

                  res.end(JSON.stringify({status:'100',msg:'上传成功',imageUrl:imageSrc}));

                }).catch(function (err) {

                  res.end(JSON.stringify({status:'101',msg:'上传失败',error:JSON.stringify(err)}));

                });

            }

        });

    });

    相关文章

      网友评论

          本文标题:node+express 实现阿里云OSS图片上传

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