Файл res.download не запрашивает загрузку файла, но печатает файл в папке. Проблема с маршрутизацией - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь разработать функцию загрузки файла для node.js одним нажатием кнопки.Когда я нажимаю кнопку на стороне клиента, файл загружается в папку сервера, но клиент не получает запрос на загрузку файла.Если я перехожу непосредственно к домену маршрутизации / excel, он делает то, что мне нужно, но если я перехожу из дома в / excel, он помещает файл в общую папку сервера, но больше не загружает его для клиента.Что я делаю не так?

--/routes/excel.js
var express = require('express');
var router = express.Router();
const Json2csvParser = require('json2csv').Parser;
var fs = require('fs');

const fields = ['car', 'price', 'color'];
const myCars = [{
  "car": "Audi",
  "price": 40000,
  "color": "blue"
}, {
  "car": "BMW",
  "price": 35000,
  "color": "black"
}, {
  "car": "Porsche",
  "price": 60000,
  "color": "green"
}];

const json2csvParser = new Json2csvParser({
  fields
});
const csv = json2csvParser.parse(myCars);

router.get('/', function(req, res, next) {

  var path = './public/file' + Date.now() + '.csv';
  fs.writeFile(path, csv, function(err, data) {
    res.download(path); // This is what you need
  });
});

module.exports = router;

--views/home.handlebars  
$('#go').on("click", () => {
  $.get("/excel");
});

--routes / index.js
var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  res.render('home', {
    title: 'Express'
  });
});
...