2016-02-01 9 views
2

Я создаю приложение, использующее node.js, и пытаюсь загрузить данные в виде файла csv. Я использую json2csv (https://www.npmjs.com/package/json2csv) для этой цели. Однако, как я его настроил, файл .csv хранится в корневом каталоге моего приложения. Я хочу, чтобы файл был отправлен пользователю в качестве загрузки - например, файл должен появиться в папке /downloads пользователя. Вот мой текущий код:Загрузить csv file node.js

var fields = ['car', 'price', 'color']; 
var myCars = [ 
    { 
    "car": "Audi", 
    "price": 1, 
    "color": "blue" 
    }, { 
    "car": "BMW", 
    "price": 1, 
    "color": "black" 
    }, { 
    "car": "Porsche", 
    "price": 1, 
    "color": "green" 
    } 
]; 

json2csv({ data: myCars, fields: fields }, function(err, csv) { 
    if (err) console.log(err); 
    fs.writeFile('file.csv', csv, function(err) { //currently saves file to app's root directory 
    if (err) throw err; 
    console.log('file saved'); 
    }); 

}); 

var file = '../software-project-metric-dashboard/file.csv'; 
res.download(file, 'testfile.csv'); 

Может кто-нибудь помочь?

Спасибо!

+0

вы или планируете ли вы использовать рамки как экспресс или вы просто хотите иметь сервер для только этого использовать? – cviejo

+0

Я использую экспресс-инфраструктуру @cviejo –

+0

Попробуйте выполнить это, вернитесь, если у вас возникнут проблемы: http://stackoverflow.com/questions/7288814/download-a-file-from-nodejs-server-using-express – cviejo

ответ

7

Используйте res.send, если используете express.

Вы должны определить GET маршрут HTTP, который выглядит примерно так:

app.get("/pathToYourDownload", function (req, res) { 
    json2csv({ data: myCars, fields: fields }, function(err, csv) { 
    res.setHeader('Content-disposition', 'attachment; filename=data.csv'); 
    res.set('Content-Type', 'text/csv'); 
    res.status(200).send(csv); 
    }); 
}); 
+0

Привет - Я пробовал это - он не отправил никаких ошибок, но он не отображается в моей папке с загрузкой. –

+0

Но он отображается на моей вкладке в консоли сети как 304 –

+0

hm странно, что, если вы пытаетесь отправить только некоторую строку, а не json.csv, просто для тестирования? – Kiechlus