Я не могу точно сказать, почему ваш код не работает, но я могу точно сказать, что то, что вы делаете, в лучшем случае бесполезно.
Не конвертируйте Blob вdataURI , 99% * времени, что вы хотите сделать с этим dataURI, может быть сделано непосредственно с оригинальным BLOB-объектом и BLOBURI.
* Оставшийся 1% - это когда вам нужно создать автономные документы, которые будут включать двоичные данные, это случается, но не так часто.
Здесь, еще раз, что выЖелание сделать (установить привязку, указывающую на данные вашего BLOB-объекта) можно сделать непосредственно с Blob: просто создайте blobURI (который является просто указателем на данные в памяти), вызвав URL.createObjectURL(blob)
.
const downloadFile = (blob, fileName) => {
const link = document.createElement('a');
// create a blobURI pointing to our Blob
link.href = URL.createObjectURL(blob);
link.download = fileName;
// some browser needs the anchor to be in the doc
document.body.append(link);
link.click();
link.remove();
// in case the Blob uses a lot of memory
window.addEventListener('focus', e=>URL.revokeObjectURL(link.href), {once:true});
};
downloadFile(new Blob(['random data']), "myfile.txt");