У меня есть строка base64, тип файла. Тип файла может быть изображением, текстом или даже PDF. Мне нужно показать ссылку download
, и когда пользователь нажимает, он должен начать загрузку как ожидаемый файл.
Вкратце, сервер отправляет мне файл как base64 string, и мне нужно сохранить его как файл в браузере. Как сохранить строку base64 как файл в браузере? Было бы лучше, если бы решение работало и на IE9.
JavaScript: сохранить base64 в качестве файла
Ответ 1
Вы можете использовать download.js.
download(base64String, filename, mimeType)
Ответ 2
Вы можете сделать это из js, чтобы загрузить pdf.
Использование:
document.location = 'data:application/pdf;base64,' + base64String
Ответ 3
Вы получаете желаемый эффект (веб-страница, показывающая ссылку, и когда пользователь нажимает кнопку, открывается диалоговое окно сохранения), когда соответствующие заголовки ответов присутствуют, когда браузер запрашивает ресурс:
Content-Disposition: attachment; имя файла = "yourfilename.extension"
Если вы получаете файл с сервера как строку base64, встроенную в ваш html, возможно, вы можете пропустить вложение и просто вставить прямую ссылку на файл на своем сервере, имея сервер, обслуживающий его для пользователя.
Ответ 4
Адаптировано из https://gist.github.com/RichardBray/23decdec877c0e54e6ac2bfa4b0c512f для работы в Firefox.
downloadBase64File(contentBase64, fileName) {
const linkSource = 'data:application/pdf;base64,${contentBase64}';
const downloadLink = document.createElement('a');
document.body.appendChild(downloadLink);
downloadLink.href = linkSource;
downloadLink.target = '_self';
downloadLink.download = fileName;
downloadLink.click();
}