Скачать файл в браузере - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь загрузить файл в браузере пользователя.Я использую Azure-Storage SDK.Ниже приведен экспресс-код.Я вижу файлы, извлекаемые на консоли браузера.Но это просто не требует загрузки для пользователя.enter image description here

app.get('/download', (req, res) => {
  res.attachment(req.get('blobName'));
  blobService.getBlobToStream(req.get('container'), req.get('blobName'), res, function (error, result, response) {
    console.log(error);
    console.log(result);
    console.log(response);
  });
});

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Запрос выполнен успешно, поэтому проблема не связана с экспресс-кодом.

Вы, похоже, используете XMLHttpRequest для отправки запроса.

XMLHttpRequest получает содержимое файла в ответ, но это нене загружать файл как вложение автоматически.

Мы должны добавить код для загрузки файла браузером.

...
//set type to blob, so that response can be used in createObjectURL method
xhr.responseType = "blob";
xhr.send();

xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        var downloadUrl = URL.createObjectURL(xhr.response)
        var a = document.createElement("a");
        document.body.appendChild(a);
        a.style = "display: none";
        a.href = downloadUrl;
        a.download = blobname;
        a.click();
}};
0 голосов
/ 25 мая 2018

вы можете попытаться использовать заголовок ответа, чтобы браузер загружал файл вместо того, чтобы рассматривать его как типичный ответ.

res.setHeader('Content-disposition', 'attachment; filename=' + blobname);
res.setHeader('Content-type', 'application/pdf');

для дальнейшей ссылки вы можете обратиться к сайту разработчика Mozilla о контенте-расстановке

...