如何在hapi js中将文件作为流回复?

时间:2017-09-06 12:27:16

标签: node.js hapijs

我有一个excel文件。我想使用hapi JS回复对象将excel文件作为流回复给用户。我试过这样但是没用。

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

有人能建议我实现这个目标吗?

1 个答案:

答案 0 :(得分:-1)

将此代码用于提供文件。如果文件是静态文件,它将在浏览器上打印,而不是像pdf,excel,word这样的静态文件,这些文件将被下载。

  '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);
    });
});

运行服务器node server.js,在浏览器中运行http://localhost:3000/testdoc.docx。希望这会有所帮助。