base64图像损坏上传到S3

时间:2016-01-10 01:06:05

标签: javascript node.js express amazon-s3

router.post('/image', multipartMiddleware , function(req, res) {

   var file_name = req.body.name;
   var data = req.body.data;

   return s3fsImpl.writeFile(file_name , data , 'base64').then(function (err) { 

        res.status(200).end();
    });

});

上面的代码有什么问题?我的文件中没有错误,我在s3中有文件,但下载时它已损坏。

1 个答案:

答案 0 :(得分:1)

由于我不知道您的代码中s3fsImpl是什么,我无法对您的实施做出回答,但这是我如何使用aws-sdk做到的:< / p>

const AWS = require('aws-sdk');
const s3 = new AWS.S3({apiVersion: '2006-03-01'});
const file_name = req.body.name;
const data = req.body.data;
const base64String = data.replace(/^data:image\/\w+;base64,/, "");
const buff = new Buffer(base64String,'base64');
const format = data.substring(data.indexOf('data:')+5,base64Img.indexOf(';base64');
s3.upload({
    Bucket:'s3-bucket-name',
    Key: file_name, 
    Body: buff, 
    ContentEncoding:'base64',
    ContentType:format
}, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response
   });