首先安装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); } }
}));
查不多就这样了,这东西折腾了我一天半时间,真够折腾的。