Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AJAX帖子将画布图像上传到AmazonS3 bucket?_Javascript_Ajax_Node.js_Amazon S3 - Fatal编程技术网

Javascript 如何使用AJAX帖子将画布图像上传到AmazonS3 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

因此,我使用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){
            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水桶里,它工作了。非常感谢!