我试图读取一个视频文件,给定文件名作为请求参数来表达路由器端点。然而,只有console.log
的参数发生,我永远无法看到视频文件数据记录到控制台。我做错了什么?任何有用的提示是高度赞赏。
var express = require("express");
var fs = require('fs')
var path = require('path')
var router = express.Router();
router.get("/:file", (req, res) => {
console.log(req.params.file)
fs.readFileSync(path.resolve('/uploads', './'+req.params.file), function (err, data){
if (!err) {
console.log("d: ",data);
res.send(data)
} else {
console.log(err);
}
});
});
2条答案
按热度按时间e7arh2l61#
你不需要提供一个fs.readFileSync的回调函数,它会在完成后返回数据。
请注意,如果文件大小很大,这将阻塞主线程,并且不被认为是良好的做法。
你可以这样使用它:
如果你想使用fs.readFile异步地完成这个任务,我会这样修改你的代码:
mrfwxfqh2#
您可以考虑在这里使用流方法,以便发送大数据