【问题标题】:Converting image-file into base64 in express nodejs在express nodejs中将图像文件转换为base64
【发布时间】:2018-07-23 13:10:49
【问题描述】:

我正在尝试将图像文件转换为 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?

【问题讨论】:

  • req.body.file的数据类型是什么?
  • 我认为是缓冲区
  • 顺便说一句,你从哪里得到这个错误?客户端还是服务器?
  • 在服务器端。
  • 好的。请检查 req.body.file 的值及其数据类型。谢谢。

标签: javascript html node.js express binary


【解决方案1】:

您需要使用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:修复了基于 cmets 的示例。确实是req.file.buffer:https://github.com/expressjs/multer/blob/master/storage/memory.js#L8

【讨论】:

  • 它对我不起作用,但稍作改动它就起作用了 const encoded = req.file.buffer.toString('base64');
  • 不确定在旧版本的 Multer 中是否这样,但对我来说,它也适用于 req.file.buffer.toString('base64')。谢谢你。 :)
【解决方案2】:

由于上一个答案对我不起作用,我正在分享另一个有效的答案。 我使用 multer 库获取文件,然后将其转换为 base64

const multer  = require('multer')
const upload = multer({});

router.post('/uploadlogo', upload.single('logo'), (req, res, next) => {
    // encoded has the base64 of your file
    const encoded = req.file.buffer.toString('base64');
});

【讨论】:

    猜你喜欢
    • 2021-07-19
    • 2017-07-02
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    相关资源
    最近更新 更多