javascript - 在express nodejs中将图像文件转换为base64

标签 javascript html node.js express binary

我正在尝试将图像文件转换为 base64,因此我可以将 base64 字符串形式存储在 mongoDB 中。

这就是我尝试这样做的方式:

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: path must be a string or Buffer

如何将该图像文件(例如:image.jpg)转换为 base64?

最佳答案

您将需要使用 Multer处理 multipart/form-data 的中间件。

const express = require('express')
const multer  = require('multer')
const upload = multer({ dest: 'uploads/' })

const app = express()

app.post('/file_upload', upload.single('example'), (req, res, next) => {
  // req.file is the `example` file or whatever you have on the `name` attribute: <input type="file" name="example" />
  // I believe it is a `Buffer` object.
  const encoded = req.file.buffer.toString('base64')
  console.log(encoded)
})

2018-10-24:请参阅下面 David 的评论。

2019-06-11:修复了基于评论的示例。确实是 req.file.buffer: https://github.com/expressjs/multer/blob/master/storage/memory.js#L8

关于javascript - 在express nodejs中将图像文件转换为base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48762165/

相关文章:

jquery - 谷歌翻译删除IE中的箭头

jquery - 给定一组 div,如何确定连续的最后一个

javascript - 如何向 Flask Server 发送数据?

javascript - 我想匹配 Angular foreach 中的特定 id

javascript - Wordpress 缺少 css 和 javascript 文件

javascript - 用于服务器到服务器通信的 Node.js

node.js - 'adapter' 中没有方法 'io'(node.js、heroku、RedisCloud、socket.io)

javascript - cheerio/jquery 选择器 : how to get a list of elements in nested div's?

javascript - 正则表达式匹配最后一对括号中的内容

javascript - d3.js 彩虹图动画增强