如何使用Node将图像上传到S3

时间:2016-12-04 07:17:38

标签: javascript node.js express amazon-s3

我正在编写一个Express应用程序,它接受一个代表图像的base64编码字符串。现在,我并不确定如何获取该字符串并将图像上传到AWS S3,因此我在读取编码的图像字符串数据,解码它,使用{{1}编写文件},然后尝试上传。我有一个端点,只接受一个原始文件,并将其所有内容正确上传到AWS s3。

现在,当我尝试按照上面的描述进行操作时,我可以上传到S3,但文件有0kb并且为空,我不知道为什么。我测试了刚刚接受stringData并将文件写入测试文件,它的工作原理。但是,当我尝试上传到s3时,文件显示但是它是空的。这是我的代码:

fs

以下是相关的进口声明:

router.post('/images/tags/nutritionalInformation/image/base64encoded', function (req, res) {
    console.log(req.body.imageString);
    var base64Stream = req.body.imageString;
    var imgDecodedBuffer = decodeBase64Image(base64Stream);
    console.log(imgDecodedBuffer);
    // write to image file
    var prefix = guid().toString() + ".jpg";
    var filePath = './uploads/' + prefix;
    console.log(filePath);


    fs.writeFile(filePath, imgDecodedBuffer.data, function(err) {
        console.log(err);
    });

    var stream = fs.createReadStream(filePath);


    console.log(stream);

    return s3fsImpl.writeFile(prefix, stream).then(function () {
        fs.unlink(filePath, function (err) {
            if (err) {
                console.error(err);
            }
        });
    });
})

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

如果您只是传入缓冲区,我认为该缓冲区位于您的imgDecodedBuffer.data值中,它应该可以正常工作。