В БД я храню и изображение и файл в массиве байтов. Из запроса (написанного в ядре .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>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте это. При преобразовании в большой двоичный объект укажите тип вашего типа файла, например 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/…