如何在Node.js中发送下载的文件作为响应?

时间:2019-01-27 06:01:45

标签: javascript node.js express

我需要从远程SFTP服务器下载文件,然后在浏览器中发送该文件作为响应。

我使用下一个代码执行此任务,但是问题不大。

router.get('/', (req, res) => {
  const remotePath = '/reports/' + 'daly.csv'

  const localePath = path.join(process.env.HOME || process.env.USERPROFILE, 'downloads/daly.csv')

  sftp.connect(config.sftpServer, 'on').then(() => {
    const options = {
      root: path.join(process.env.HOME || process.env.USERPROFILE, 'downloads'),
      dotfiles: 'deny',
      headers: {
        'x-timestamp': Date.now(),
        'x-sent': true
      }
    }

    sftp.fastGet(remotePath, localePath, {}).then(() => {
      res.setHeader('Content-disposition', 'attachment; filename=daily.csv')
      res.sendFile('daily.csv', options)
    })

  }).catch((error) => {
    console.log(error)
  })
})

如您所见,我使用ssh2-sftp-client库的fastGet方法将文件从远程服务器下载到用户的本地计算机。之后,我使用Express Framework的sendFile方法。最后,我在用户计算机的本地文件夹中有2个相同的csv文件。如何解决此问题?

0 个答案:

没有答案