Скачать файл на React js, переданный как массив байтов

В БД я храню и изображение и файл в массиве байтов. Из запроса (написанного в ядре .Net) я получаю массив байтов во внешний интерфейс (написанный в реакции js). Я могу отобразить изображение, используя

let image = 'data:image/jpeg;base64,' + byteArray;

и это работает нормально. Я хочу сделать то же самое с файлом и при нажатии просто загрузить файл или открыть его в новой вкладке. Файл в основном PDF, Word, Excel. Я пробовал две вещи, но они, похоже, не работают.

let uriContent = "data:application/octet-stream," + encodeURIComponent(file);
window.open(uriContent, "document");

Есть ли какая-то другая строка, которую мне нужно объединить перед массивом байтов, или я неправильно использую blob?

let blob = new Blob(new Uint8Array(byteArray));
let file = reader.readAsArrayBuffer(blob);

В идеале после этого преобразования я смогу передать файл в теге привязки.

<a href = {this.props.file}>Download File</a>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
12 971
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте это. При преобразовании в большой двоичный объект укажите тип вашего типа файла, например PDF или любой другой тип вашего файла, затем создайте URL-адрес объекта и откройте в новом окне с помощью window.open. В приведенном ниже коде я пытаюсь загрузить тот же файл, который вы выберете с тегом файла в функции загрузки.

<input type = "file" onChange = "Upload(this)"></input>
<script>
  function Upload(element) {
    var reader = new FileReader();
    let file = element.files[0];
    reader.onload = function () {
      var arrayBuffer = this.result;
      Download(arrayBuffer, file.type);
    }
    reader.readAsArrayBuffer(file);
  }

  function Download(arrayBuffer, type) {
    var blob = new Blob([arrayBuffer], { type: type });
    var url = URL.createObjectURL(blob);
    window.open(url);
  }

</script>

Спасибо за ваш ответ, я просто хотел бы добавить эту ссылку, я думаю, что это очень полезно medium.com/@riccardopolacci/…

Andrea 03.06.2019 00:05

Другие вопросы по теме