@nurzhannogerbek

Как скачать файл из sftp сервера в Node.js + Vue.js?

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

Пользовательские запросы из Vue.js приложения обрабатываются в Node.js HTTP веб-сервером. Вообщем стоит задача скачать файл из удаленного sftp сервера через веб-интерфейс. Вот, что я сделал.

При клике определенной кнопки запускается функция getFile в которую я передаю название файла. В функции getFile делаю post запрос на определенной url адрес. Этот url адрес обрабатывает контроллер в Node.js. На стороне Node.js подключение и скачивание файла происходит с помощью библиотеки ssh2-sftp-client.

На данный момент ошибка на стороне Vue.js. Запрос не доходит до Node.js, как мне кажется. Где, что упустил. Подскажите пожалуйста.
Error: Request failed with status code 404
    at FtD3.t.exports (createError.js:16)
    at t.exports (settle.js:18)
    at XMLHttpRequest.f.(:3010/anonymous function) (http://localhost:3010/static/js/vendor.1dc24385e2ad03071ff8.js:1312:88758)


Код из Vue.js компонента следующий:
getFile (fileName) {
    axios.post('http://localhost:3010/csv', {file_name: fileName}, {headers: {'Authorization': this.token}}).then(response => {
        console.log(response)
        this.showAlert('Файл скачен.', 'is-success', 'is-top')
    }).catch((error) => {
        console.log(error)
        this.showAlert(error, 'is-danger', 'is-bottom')
    })
}


controller:
const request = require('request')
const queryString = require('query-string')
let Client = require('ssh2-sftp-client')
let sftp = new Client()

const config = require('../config')

exports.getFile = (req, res) => {
  console.log(req)  // В консоль ничего не выводится
  let data = {
    file_name: req.query.file_name
  }
  let options = {
    method: 'port',
    json: true,
    header: {'Authorization': req.header.token},
    url: `http://localhost:3010/csv?` + queryString.stringify(data)
  }
  request(options, (error, response) => {
    console.log('Выполняется блок')  // <- В консоль ничего не выводится.
    if (response) {
      sftp.connect(config.sftpServer).then(() => {
        return sftp.get('/reports/' + data.file_name)
      }).then((chunk) => {
        console.log(chunk)
      }).catch((err) => {
        console.log(err)
      })
    } else {
      response.status(500).send(error)
    }
  })
}
  • Вопрос задан
  • 202 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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