如何从缓冲区提取文件内容?

时间:2019-04-20 18:14:26

标签: javascript node.js fs multer

我只是在探索Node.js并遇到一个问题,在创建使用multer模块将小文件上传到内存的功能时。

我正在为MemoryStorage使用内置的multer选项。该文件已成功上传,并且文件元数据可在req的{​​{1}}对象中访问。

现在,我希望能够从Buffer中读取文件内容,因为此文件将采用.csv格式,之后将转换为JSON。我需要文件的字符串内容来执行转换。

这是我的路由器处理程序:

ExpressJS

.csv文件已使用:

const memStorage = multer.memoryStorage();
const memUpload = multer({
  storage: memStorage,
  limits: { fileSize: 30 * 1024 * 2014, files: 1 }
});
router.post(
  '/tables/csv',
  memUpload.single('file'),
  (req, res) => {
    const file = req.file;
    let buffer = fs.readFileSync(file.buffer);
    console.log(buffer);
  }
);

控制台输出:

Risk Category,Risk ID,Risk Value
Some,Some,Some
Some,Some,Some
Some,Some,Some

1 个答案:

答案 0 :(得分:0)

您可以在调用fs.readFileSync以获得字符串时指定编码:

fs.readFileSync(file.buffer, { encoding: 'utf8' });

或者,您不需要readFileSync。您可以像这样致电buffer.toString(encoding)

file.buffer.toString('utf8');