Javascript Hapi JS发送文件

Javascript Hapi JS发送文件,javascript,node.js,csv,mime-types,hapijs,Javascript,Node.js,Csv,Mime Types,Hapijs,我有下一个任务: my中的一个请求希望获取带有统计信息的csv文件。我有JSON结构。使用模块,我从json创建一个csv结构。问题是:我如何用正确的mime类型(text/csv)将其发送给用户 好的,我使用Hapi.response.Stream找到了一个解决方案: var stream = csv().from.array(arr, { columns: ["date", "shop_id", "product_id", "count"] }); var response = n

我有下一个任务:

my中的一个请求希望获取带有统计信息的csv文件。我有JSON结构。使用模块,我从json创建一个csv结构。问题是:我如何用正确的mime类型(text/csv)将其发送给用户


好的,我使用Hapi.response.Stream找到了一个解决方案:

var stream = csv().from.array(arr, {
   columns: ["date", "shop_id", "product_id", "count"]
});


var response = new Hapi.response.Stream(stream);

response.type('text/csv');
request.reply(response);

也许你可以告诉我实现它的最佳方法。

我相信在提出这个问题时,返回文件的API可能不可用。但是,可以使用以下方法为静态文件提供服务:

1-
回复
界面上的
文件
方法

reply.file('./path/to/file');
2-直接指定文件处理程序:

server.route({
    method: 'GET',
    path: '/picture.jpg',
    handler: {
        file: 'picture.jpg'
    }
});
请查看此Hapi以获取详细解释。

您可以使用目录:) 之后,hapi 9.x不再与hapi集成,但您可以要求并使用它

查看更多信息

使用此

file="path/to/your/csvFile.csv"
return h.file(file,{mode:'attachment',type:'text/csv'})

可能有助于希望使用Hapi V18以CSV文件流响应的用户

const stringify = require('csv-stringify')

const stream = stringify(arrayOfObjects, { header: true })
return h.response(stream)
  .type('text/csv')
  .header('Connection', 'keep-alive')
  .header('Cache-Control', 'no-cache')
  .header('Content-Disposition', 'attachment;filename=myfilename.csv')

或者,您可以使用:reply(data).type('text/csv')如何定义发送到客户端的文件名?回复(数据)。键入('text/csv')可以正常工作,但发送一个没有扩展名的“csv”文件,我想自己生成名称。
const stringify = require('csv-stringify')

const stream = stringify(arrayOfObjects, { header: true })
return h.response(stream)
  .type('text/csv')
  .header('Connection', 'keep-alive')
  .header('Cache-Control', 'no-cache')
  .header('Content-Disposition', 'attachment;filename=myfilename.csv')