@maestro07

Как скачать pdf axios?

const download = (name: string, blob) => {
    const data = new Blob([atob(blob)], { type: 'application/pdf' });
    const url = URL.createObjectURL(data);    console.log(url);
    const link = document.createElement('a');

    link.setAttribute('href', url);
    link.setAttribute('download', name);
    link.addEventListener('click', () => {
      setTimeout(() => {
        URL.revokeObjectURL(url);
      });
    });

    link.click();
  };


реализовал скачивания файла. Но получаю ошибку
Failed to execute 'atob' on 'Window': The string to be decoded contains characters outside of the Latin1 range.
  • Вопрос задан
  • 187 просмотров
Решения вопроса 2
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Failed to execute 'atob' on 'Window': The string to be decoded contains characters outside of the Latin1 range

В строке имеются символы, которые не поддерживаются в функции atob. Можно предварительно проверять строку на символы, либо можно попробовать так:
const d = (name, blob) => {
    const url = URL.createObjectURL(blob);
    // code
}
Ответ написан
@darkenF
const download = (name: string, blob) => {
    const byteCharacters = new Uint8Array(blob.length);
    for (let i = 0; i < blob.length; i++) {
        byteCharacters[i] = blob.charCodeAt(i);
    }
    
    const data = new Blob([byteCharacters], { type: 'application/pdf' });
    const url = URL.createObjectURL(data);
    console.log(url);
    
    const link = document.createElement('a');
    link.setAttribute('href', url);
    link.setAttribute('download', name);
    
    link.addEventListener('click', () => {
        setTimeout(() => {
            URL.revokeObjectURL(url);
        });
    });

    link.click();
};
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы