Получить имя файла перед сохранением - PullRequest
0 голосов
/ 01 июня 2018

У меня есть запрос на загрузку файла с удаленного API.Однако я хочу сохранить этот файл с тем же именем, с которым он сохраняется при загрузке файла из браузера.Например, у меня есть URL https://myapi.com/files/4hjiguo4ho45946794526975429, и когда я щелкаю эту ссылку, браузер сразу начинает загружать файл с этого URL с именем myfile20180601.txt.Как сохранить файл с тем же именем, если я сделаю запрос из Node.js?Это мой код:

axios({
    method: 'get',
    url: 'https://myapi.com/files/4hjiguo4ho45946794526975429',
    responseType: 'stream',
    headers: {
        Authorization: 'Basic KJVEB46287blablablatoken'
    }
})
 .then(res => res.data.pipe(fs.createWriteStream(`${/* filename */}.txt`)))
 .catch(err => console.error(err));

1 Ответ

0 голосов
/ 01 июня 2018

Вы можете найти свое имя файла в ответе axios

var axios = require('axios')
var fs = require('fs')

axios({
    method:'get',
        url:'https://myapi.com/files/4hjiguo4ho45946794526975429',
        responseType:'stream'
    })
.then(function(response) {
    let headerLine = response.data.headers['content-disposition']
    let startFileNameIndex = headerLine.indexOf('"') + 1
    let endFileNameIndex = headerLine.lastIndexOf('"')
    let filename = headerLine.substring(startFileNameIndex, endFileNameIndex)
    response.data.pipe(fs.createWriteStream(filename))
});

Надеюсь, этот ответ помог вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...