nodejs + ueditor 富文本编辑上传图片到aws s3 中

首先安装aws sdk :

$> npm install aws-sdk

绑定ueditor选图片事件上传图片:

var fs = require('fs');

var path = require('path');

var uuid = require('node-uuid');

var AWS = require('aws-sdk');

app.use("/ueditor",ueditor(path.join(_dirname,'public'),function(req,res){

try{
        var imgname = req.ueditor.filename;
        var uid = uuid.v1(); //图片名称
        var rpx =path.extname(imgname);//后缀
        var date = new Date();
        var time = date.getFullYear() + "" + (date.getMonth() < 10 ? '0' + (date.getMonth()+1) : (date.getMonth()+1));
     
        var key = 'image/'+time+'/'+uid+rpx;
        var os = require('os');
        var tmpdir = path.join(os.tmpDir(), path.basename(imgname));//临时文件路径
        //保存到临时文件夹中
        var writeStream = fs.createWriteStream(tmpdir);
        req.ueditor.file.pipe(writeStream);
        writeStream.on('finish', function() {
            //上传到 aws s3 中
            AWS.config.update({
                accessKeyId: 'xxxxxxxxxxxxxxx',
                secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
            });
            var s3 = new AWS.S3();
            var stream = fs.createReadStream(tmpdir);//读取文件信息
            var bucket = 'grei.prod';
            //console.log("---------------streamd is: "+stream);


            s3.createBucket({Bucket:bucket}, function() {
                //console.log("---------------begin upload file "+stream);
                var params = {
                    Bucket:bucket,
                    Key: key,
                    //ACL: 'public-read',
                    AccessControlPolicy: {//设置访问权限
                        Grants: [
                            {
                                Grantee: {
                                    Type: 'CanonicalUser', /* required */
                                    ID: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
                                },
                                Permission: 'read | read_acp'
                            }
                            /* more items */
                        ],
                        Owner: {
                            DisplayName: 'info',
                            ID: 'xxxxxxxxxxxxxxxxxxxxxx'
                        }
                    },
                    Body: stream,
                    ContentType:req.ueditor.mimetype
                };

                //上传
                s3.upload(params, function(err, data){
                    if(err){
                        console.log("Error! err =====> ", err);
                    }else{
                        res.json({//设置返回img信息到ueditor中
                            'url': path.join('upload/ueditor/image/'+time+'/', uid+rpx).replace(/\\/g,'/'),
                            'title': req.body.pictitle,
                            'original': imgname,
                            'state': 'SUCCESS'
                        });
                    }
                });
            });

        });

   }catch(e){
       console.log(e);
   }

}

 

}));

查不多就这样了,这东西折腾了我一天半时间,真够折腾的。

 

转载于:https://my.oschina.net/adwangxiao/blog/727999

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值