我正在编写一个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);
}
});
});
})
非常感谢任何帮助!
答案 0 :(得分:1)
如果您只是传入缓冲区,我认为该缓冲区位于您的imgDecodedBuffer.data
值中,它应该可以正常工作。