Recentemente ho iniziato a lavorare con node.js. Mentre sto affrontando un requisito in uno dei miei progetti, sto affrontando un problema in cui dovrei essere in grado di scrivere dinamicamente alcuni dati in un file CSV e lasciarlo richiamare come popup da scaricare per l'utente (con opzioni di salvataggio e annullamento - come normalmente vedere). Dopo aver cercato su Google per un po 'di tempo ho deciso di utilizzare il modulo csv npm https://github.com/wdavidw/node-csv-parser. Sono in grado di scrivere dati in un file e salvarlo utilizzando questo modulo. Voglio richiedere un popup per salvare questo file con/senza salvare il file.Richiedi un file csv da scaricare come pop-up usando node.js e node-csv-parser (modulo nodo)
mio codice simile a questa:
// Sample Data
var data = [["id", "subject1", "subject2", "subject3"], ["jack", 85, 90, 68], ["sam", 77, 89, 69]]
// Server Side Code
var csv = require('../../node_modules/csv');
var fs = require('fs');
createCSV = function(data, callback) {
csv().from(data).to(fs.createWriteStream('D:/test.csv')) // writing to a file
}
// Client side call sample
$("#exportToCSV").click(function() {
callToServer.createCSV(data);
return false;
});
Questo è il lavoro buono per quanto riguarda la scrittura del file CSV è interessato.
- Desidero richiedere immediatamente questo file per il download per gli utenti.
- Se questo può essere fatto senza salvare il file, sarà fantastico.
- Come posso impostare content-type e content-disposition come facciamo in PHP
Qualsiasi aiuto è molto apprezzato. -Grazie
Solo una nota, una volta completato il codice del server sopra, collegare il proprio lato client location.href all'URL di richiesta del nodo [non è necessario per una chiamata Ajax]. – vinod
Una breve nota sulla sintassi per Express 4: res.setHeader ('Content-disposition', 'attachment; filename = testing.csv'); res.set ('Content-Type', 'text/csv'); res.status (200) .send (csv); –
senza libreria csv, e senza express, invece della riga csv(), puoi fare response.write (myCSVText); resonse.end(); –