Javascript 如何使用AJAX帖子将画布图像上传到AmazonS3 bucket?
因此,我使用node.js和express.js来设置本地服务器。我希望能够将画布保存为png,然后使用aws sdk将该png上传到AS3 bucket 这是我发布到本地服务器的代码Javascript 如何使用AJAX帖子将画布图像上传到AmazonS3 bucket?,javascript,ajax,node.js,amazon-s3,Javascript,Ajax,Node.js,Amazon S3,因此,我使用node.js和express.js来设置本地服务器。我希望能够将画布保存为png,然后使用aws sdk将该png上传到AS3 bucket 这是我发布到本地服务器的代码 module.saveScreen=function(){ var screenName=currentPage; if(screenName!='Intro' && screenName!=null){ if(data.reachedReview == true
module.saveScreen=function(){
var screenName=currentPage;
if(screenName!='Intro' && screenName!=null){
if(data.reachedReview == true){
screenName=screenName+'Revised';
}
var diagram=canvas.toDataURL('image/png');
var dataToSend={
screenName:screenName,
participantNumber:participantNumber,
surveyId:data.surveyId,
diagram:diagram
};
var dataToSendStr=JSON.stringify(dataToSend);
var settings={
processData:false,
url: 'saveScreen',
dataType:'text',
contentType:'application/json',
type:'POST',
data:dataToSendStr,
success: function(data){
console.log('success');
},
error: function(err,textStatus,errorThrown){
console.log('error saving data');
console.log('error textStatus: '+textStatus);
console.log('error errorThrown: '+errorThrown);
return;
}
};
$.ajax(settings);
}
};
以下是将图像上载到AS3的服务器端代码:
app.post('/saveScreen',function(req,res){
aws.config.loadFromPath('./aws-config.json');
var s3 = new aws.S3({params: {Bucket: S3_BUCKET} });
var pn=req.body.participantNumber;
var surveyId=req.body.surveyId;
var screenName = req.body.screenName;
var pngFile=pn+'/'+surveyId+"/"+screenName+".png";
var body = req.body.diagram;
var params = {
Bucket: S3_BUCKET,
Key: pngFile,
ACL: 'public-read-write',
Body: body,
ContentType: 'image/png',
ContentEncoding: 'application/json; charset=utf-8'
};
s3.putObject(params, function(err, data){
if(err){ console.log("Error: " + err); }
else{ console.log("Sending Image Success: " + data); }
});
res.json(req.body);
});
我对来自用户的一些数据做了类似的操作,这些数据存储为xml,放入一个对象,字符串化,然后发布。这很好,但这对图像不起作用
我不确定问题到底出在哪里。我认为这是一个编码问题,但我已经尝试了许多不同的编码/解码组合,到目前为止没有任何效果
有什么帮助吗?那么你是说你使用了像这样的编码器?文章的主体应该看起来像一个编码字母数字字符的长字符串,我的意思是我告诉了AJAX不同的事情,我在S3参数中尝试了不同的内容编码。所有的事情都需要通过脚本来完成。我会签出一个模块,比如,并将req.body.diagram转换成这个编码值,我想我现在已经可以工作了。我照你说的做了,用base64解码器解码。我把它送到了AS3水桶里,它工作了。非常感谢!