【问题标题】:Reading video file using fs.readFileSync is not working in node.js使用 fs.readFileSync 读取视频文件在 node.js 中不起作用
【发布时间】:2020-08-12 02:56:14
【问题描述】:

我正在尝试读取视频文件,将文件名作为表示路由器端点的请求参数。但是,只有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);
        }
    });
});

【问题讨论】:

    标签: node.js file express fs


    【解决方案1】:

    您不需要向fs.readFileSync 提供回调,它会在完成后返回数据。

    请注意,如果文件很大,这会阻塞主线程并且不被认为是好的做法。

    你会这样使用它:

    var express = require("express");
    var fs = require('fs')
    var path = require('path')
    var router = express.Router();
    
    router.get("/:file", (req, res) => {
        try { 
            console.log(req.params.file)
            let data = fs.readFileSync(path.resolve('/uploads', './'+req.params.file));
            console.log("d: ",data);
            res.send(data)
        } catch (err) { 
            console.error(err);
            res.status(500).send("Something bad happened");
        }
    });
    

    如果您希望使用 fs.readFile 异步执行此操作,我将修改您的代码,如下所示:

    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.readFile(path.resolve('/uploads', './'+req.params.file), function (err, data){
            if (!err) {
                console.log("d: ",data);
                res.send(data)
            } else {
               console.log(err);
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2015-06-28
      • 2020-09-23
      • 2019-11-01
      • 2014-04-30
      • 2020-06-22
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多