Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
 Скачать файл через Axios в Nuxt js посредством Stream  [new]
vb_sub
Member

Откуда:
Сообщений: 782
Всем привет, хочу в NuxtJs приложении скачать файл посредством стрима.
Посылаю запрос на бэкэнд
  await axios
      .post(url, payload,
        {
          headers: {
          'responseType': 'stream',
          'Content-Type': 'multipart/form-data'
          }
        })
      .then(response => {
      });
  } catch (error) {
    errorMessage = error;
  }

на бэкэнде (AspNet Core)
public async Task<IActionResult> UploadFile()
        {  
            try
            {          
                string path = "C://Temp/test.doc";
                FileStream fs = new FileStream(path, FileMode.Open);

                return new FileStreamResult(fs, new MediaTypeHeaderValue("application/octet-stream"))
                {
                    FileDownloadName = "test.doc"
                };
                return Ok();
            }
            catch (System.Exception ex)
            {
                return BadRequest(ex.Message);
            }
        }

Ответ приходит, все нормально в response.data есть кракозябры, однако как их превратить в файл для загрузки из браузера?
Для Blob я использовал следующую конструкцию:
 const url = window.URL.createObjectURL(new Blob([response.data]));
        const link = document.createElement("a");
        link.href = url;

        const contentDisposition = response.headers["filename"];

        let fileName = "unknown";
        if (contentDisposition) {
          fileName = contentDisposition;
        }

        link.setAttribute("download", fileName);
        document.body.appendChild(link);
        link.click();

Но, хотелось бы обойтись без промежуточного Blob- сделать файл сразу из Stream.
Единственное, что нашел из документации-
axios({
  method: 'get',
  url: 'http://bit.ly/2mTM3nY',
  responseType: 'stream'
})
  .then(function (response) {
    response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
  });

Но это, как я понимаю для серверного JavaScript, а не для браузерного, потому что что response.data.pipe =Undefined.
Спасибо
7 окт 20, 17:34    [22210356]     Ответить | Цитировать Сообщить модератору
Все форумы / HTML, JavaScript, VBScript, CSS Ответить