我正在尝试将图像文件转换为Base64,这样我就可以在MongoDB中以Base64字符串的形式存储。
这就是我试图做到的:
router.post('/file_upload',function(req,res){
function base64_encode(file) {
var bitmap = fs.readFileSync(file);
return new Buffer(bitmap).toString('base64');
}
var ImageFileToSave = base64_encode(req.body.file);
console.log(ImageFileToSave);
})
客户端:
<form action="/file_upload" method="POST" enctype="multipart/form-
data">
<input type="file" name="file" />
<input type="submit" value="Upload File" />
</form>
这就是我得到的错误
TypeError:路径必须是字符串或缓冲区
如何将图像文件(例如:Image.jpg)转换为Base64?
3条答案
按热度按时间xbp102n01#
您将需要使用Multer中间件来处理
multipart/form-data
。2018年10月24日:见大卫的评论如下。
2019-06-11:基于评论的修复示例。它确实是
req.file.buffer
:https://github.com/expressjs/multer/blob/master/storage/memory.js#L8ulmd4ohb2#
由于之前的答案对我不起作用,我现在分享另一个有效的答案。我使用Multer库获取文件,然后将其转换为Base64
guicsvcw3#
如果您想要更多的控制,也可以通过某种方式手动完成。下面是一个示例,但您可以以任何您想要的方式实现它,作为中间件或单独调用的函数。
这里假设您的映像是Base64,即“req.body.Image”。