2017-09-06 2 views
1

Ich habe eine Excel-Datei. Ich möchte Excel-Datei als Stream für den Benutzer mit Hapi JS-Antwort-Objekt antworten. Ich habe es versucht, aber es hat nicht funktioniert.wie man eine Datei als Stream in hapi js antwortet?

let readStream = fs.createReadStream(filePath); 
reply(null,readStream.pipe()); 

Kann mir jemand einen Ansatz vorschlagen, um dies zu erreichen?

+0

Sie möchten Excel-Daten drucken ??? Ich meine, Sie möchten Excel-Daten anzeigen .. –

+0

Antwort muss als Excel-Datei herunterladen.keine Notwendigkeit, Excel zu drucken.Ich kann direkt Datei an den Benutzer senden, aber ich bekomme die Daten aus der Datenbank als Stream, so dass, anstatt zu schreiben zu einer Excel-Datei und dann zurück zu Excel-Datei. Ich möchte Streams verwenden. –

+0

Checkout meine Antwort ..Lass mich wissen, wenn Sie irgendwelche Fragen haben .... –

Antwort

-1

Verwenden Sie diesen Code für Serving-Datei. Wenn Dateien statische Dateien sind, die im Browser anders als statische Dateien wie PDF, Excel, Word gedruckt werden, werden diese Dateien heruntergeladen.

'use strict'; 

const Path = require('path'); 
const Hapi = require('hapi'); 
var fs = require('fs'); 
const server = new Hapi.Server(); 
server.connection({ port: 3000, host: 'localhost' }); 

server.register(require('inert'), (err) => { 

    if (err) { 
     throw err; 
    } 

    server.route({ 
     method: 'GET', 
     path: '/testdoc.docx', 
     handler: function (request, reply) { 
var stream = fs.createReadStream('./testdoc.docx'); 
stream.on('data', function(data) 
{ 
    console.log(data); 
console.log('loaded part of the file'); 
//reply(null,data); 
reply(data); 
}); 
     stream.on('end', function() 
{ 
    console.log('all parts is loaded'); 
}); 

      } 
    }); 

    server.start((err) => { 

     if (err) { 
      throw err; 
     } 

     console.log('Server running at:',server.info.uri); 
    }); 
}); 

führen Sie den Server node server.js und in Browser als http://localhost:3000/testdoc.docx laufen. Hoffe das hilft.

+0

Danke für den code.this ist genau das, was ich jetzt benutze aber ich möchte Datei als Stream senden, weil schreiben und lesen zu einer Zeit passieren kann. once stream abgeschlossen ich kann die Datei löschen (derzeit verwende ich settimeout mit 2mints, aber das ist kein guter Ansatz für die Sicherheit) –

Verwandte Themen