Как изменить файл перед отправкой (Node js) - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть приложение nodejs, которое отправляет запрошенные файлы по пути, я хочу изменить и обновить теги "sr c" & "href" перед отправкой, я использую путь res.sendFile ("для файл "), но я хочу изменить этот файл перед отправкой, есть ли способ, которым я могу сделать это

Router.get("/report/", (req, res) => {
  const path = req.query.drive + req.query.file;

  const options = {
    project: req.query.project,
    type: "static_analysis_report1"
  };

  fs.createReadStream(path)
    .pipe(new ModifyFile(options))
    .pipe(res);
});

ModifyFile class

class ModifyFile extends Transform {
  project_name = "";
  type = "";

  constructor(options) {
    super(options);
    this.project_name = options.project_name;
    this.type = options.type;
  }

  _transform(chunk, encoding, cb) {
    const project_name = this.project_name;
    const type = this.type;

    var htmlCode = chunk.toString();
    console.log(htmlCode);
    cb();
  }
}

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Пример на основе потока

const { Transform } = require('stream');
const  { createReadStream } = require('fs');
const {join} = require('path');

const myTransform = new Transform({
  transform(chunk, encoding, callback) {
     this.push(chunk); // <--- modify it
     callback();
  }
});

app.get('/:file', function(req, res) {
      createReadStream(join(__dirname, req.params.file)).pipe(myTransform).pipe(res);
});
0 голосов
/ 11 февраля 2020

Используйте Обратные вызовы или Обещания, чтобы обновить данные раньше.

...