@nurzhannogerbek

Стоит ли использовать res.sendFile в Node.js для отправить csv файл в виде ответа пользователю?

Здравствуйте, товарищи! Помогите пожалуйста разобраться.

При обращении к определенному url адресу нужно скачать файл из удаленного SFTP сервера и вернуть его пользователю в браузере.

Использовал библиотеку ssh2-sftp-client для этой задачи. Файл из удаленного сервера скачал в локальную машину пользователя через метод fastGet. Далее этот файл нужно в виде ответа прислать пользователю. Использовал следующий код, но он получается создает еще один точно такой же файл в локальной директории пользователя. Как исправить это?

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('daly.csv', options)
    })

  }).catch((error) => {
    console.log(error)
  })
})
  • Вопрос задан
  • 354 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы