如何从缓冲区中提取文件内容?
Posted
技术标签:
【中文标题】如何从缓冲区中提取文件内容?【英文标题】:How to extract file contents from a Buffer? 【发布时间】:2019-09-10 14:02:25 【问题描述】:我只是在探索 Node.js,在创建使用 multer
模块将小文件上传到内存的功能时遇到了一个问题。
我正在为multer
使用内置的MemoryStorage
选项。文件上传成功,文件元数据可以在ExpressJS
的req
对象中访问。
现在我希望能够从 Buffer 中读取文件内容,因为该文件将采用 .csv 格式,稍后将转换为 JSON。我需要文件的字符串内容来执行转换。
这是我的路由器处理程序:
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);
);
使用的.csv文件:
Risk Category,Risk ID,Risk Value
Some,Some,Some
Some,Some,Some
Some,Some,Some
控制台输出:
Error: ENOENT: no such file or directory, open 'Risk Category,Risk ID,Risk Value
Some,Some,Some
Some,Some,Some
Some,Some,Some'
at Object.openSync (fs.js:436:3)
at Object.readFileSync (fs.js:341:35)
at router.post (C:\client_projects\tt\sarcs-hotline\router\index.js:1039:21)
at Layer.handle [as handle_request] (C:\client_projects\tt\sarcs-hotline\node_modules\express\lib\router\layer.js:95:5)
at next (C:\client_projects\tt\sarcs-hotline\node_modules\express\lib\router\route.js:137:13)
at Array.<anonymous> (C:\client_projects\tt\sarcs-hotline\node_modules\multer\lib\make-middleware.js:53:37)
at listener (C:\client_projects\tt\sarcs-hotline\node_modules\on-finished\index.js:169:15)
at onFinish (C:\client_projects\tt\sarcs-hotline\node_modules\on-finished\index.js:100:5)
at callback (C:\client_projects\tt\sarcs-hotline\node_modules\ee-first\index.js:55:10)
at IncomingMessage.onevent (C:\client_projects\tt\sarcs-hotline\node_modules\ee-first\index.js:93:5)
at IncomingMessage.emit (events.js:182:13)
at endReadableNT (_stream_readable.js:1094:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
【问题讨论】:
【参考方案1】:你可以在调用fs.readFileSync
获取字符串时指定你的编码:
fs.readFileSync(file.buffer, encoding: 'utf8' );
或者你不需要readFileSync
。你可以打电话给buffer.toString(encoding)
喜欢
file.buffer.toString('utf8');
【讨论】:
以上是关于如何从缓冲区中提取文件内容?的主要内容,如果未能解决你的问题,请参考以下文章