Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.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 如何使用节点在AWS上保存图像_Javascript_Node.js_Amazon Web Services_Amazon S3 - Fatal编程技术网

Javascript 如何使用节点在AWS上保存图像

Javascript 如何使用节点在AWS上保存图像,javascript,node.js,amazon-web-services,amazon-s3,Javascript,Node.js,Amazon Web Services,Amazon S3,我正在使用node.js,并希望将我在base64中收到的图像放在aws上。一切都进行得很顺利并加载了它们,但当我打开它们时,它会给我一个错误,告诉我我的格式不对。如何获取图像链接以将其存储在数据库中 base64表格: data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/...... 上载图像的功能: const s3 = new aws.S3({ params: { Bucket: process.env.S3_BUC

我正在使用node.js,并希望将我在base64中收到的图像放在aws上。一切都进行得很顺利并加载了它们,但当我打开它们时,它会给我一个错误,告诉我我的格式不对。如何获取图像链接以将其存储在数据库中

base64表格:

data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/......
上载图像的功能:

const s3 = new aws.S3({ params: { Bucket: process.env.S3_BUCKET } });
                    let data = this.createData(req.body.image);
                    s3.putObject(data, (err, response) => {
                        if (err) {
                            console.log(err);
                        }
                        else {
                            console.log(response)
                            /*tmp = task
                                .update(req.body)
                                .then(() => res.status(200).send(JSON.stringify(task.id_creator)))
                                .catch(error => res.status(400).send(error));*/
                        }
                    })

createData(image) {
    //TODO NOME CARTELLA
    let data = {
        Key: 'test1',
        Body: image,
        ContentEncoding: 'base64',
        ContentType: 'image/jpeg'
    };
    return data;
}
很显然,一切进展顺利,答案是:

{ ETag: '"20eaa681c71825d8f57472eb378be651"',
VersionId: 'kjQCDdfoq5H0Clhbs79SU4JiIUq8BgOn' }
但是,当我在我的存储桶中进入s3控制台时,如果我下载图像,则会出现错误“格式错误”

我想出了一个解决方案: 我刚才补充说

let buf = new Buffer(req.body.image.replace(/^data:image\/\w+;base64,/, ""),'base64');
并将buf作为数据发送。 我添加了一个ACL参数:

createData(image) {
    //TODO NOME CARTELLA
    let data = {
        Key: 'test1',
        Body: image,
        ContentEncoding: 'base64',
        ContentType: 'image/jpeg',
        ACL: 'public-read'
    };
    return data;
}