Мне нужно загрузить файл с удаленного 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)
})
})
Как выМожно видеть, что я использую fastGet
метод библиотеки ssh2-sftp-client для загрузки файла с удаленного сервера на локальную машину пользователя.После этого я использую sendFile
метод Express Framework.В финале у меня есть 2 одинаковых CSV-файла в локальной папке компьютера пользователя.Как решить эту проблему?