Чтение видеофайла с использованием fs.readFileSyn c не работает в node.js - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь прочитать видеофайл, учитывая имя файла в качестве параметра запроса для express конечной точки маршрутизатора. Тем не менее, происходит только 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);
        }
    });
});

1 Ответ

1 голос
/ 28 апреля 2020

Вам не нужно предоставлять обратный вызов для fs.readFileSyn c, он вернет данные после завершения.

Имейте в виду, если размер файла велик, это заблокирует основной поток и не будет считаться хорошей практикой.

Вы бы использовали его так:

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");
    }
});

Если вы будете sh делать это асинхронно, используя 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);
        }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...