@Furamy

Как сделать скачивание файла закодированного в base64?

Нужно реализовать функционал загрузки и скачивания файла, загрузку сделал через input type="file", но получаю я его в base64, а при попытке сделать ссылку на скачивание через a href="base64" download="filename.file" получаю в консоль это:604bba9b8ba46431935124.png

Функционал загрузки
fileUpload(fileInput: HTMLInputElement, type: string, attached: IAttached): void {
        fileInput.onchange = (e: Event) => {
            const { files } = e.target as HTMLInputElement

            [].forEach.call(files, (file: File) => {
                const fileReader = new FileReader()

                console.log(file)

                fileReader.onload = (ev: ProgressEvent) => {
                    const fr = ev.target as FileReader
                    console.log(fr)

                    const attach: IAttach = {
                        name: file.name,
                        type: file.type,
                        size: file.size,
                        result: fr.result
                    }

                    if (file.type.match('image'))
                        attached.images.push(attach)
                    else if (file.type.match('video'))
                        attached.videos.push(attach)
                    else
                        attached.files.push(attach)

                }

                fileReader.readAsDataURL(file)
            })
        }

        fileInput.click()
    }

<div class="attached">
			<div class="files">
				<a *ngFor="let attach of attached.files"
				   [href]="attach.result"
				   download="{{ attach.name }}"
				>
					<span class="name">{{ attach.name }}</span>
					<span class="size">{{ attach.size }}</span>
				</a>
			</div>
			<div class="images"></div>
			<div class="videos"></div>
		</div>
  • Вопрос задан
  • 1735 просмотров
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Сначала перегоните base64 в Blob при помощи fetch банально скачав файл, а уже затем отдавайте Blob на загрузку используя URL.createObjectURL

Ссылки на материалы:
https://learn.javascript.ru/fetch
https://learn.javascript.ru/blob#0qlrkgk6lj

P. S. Вообще, я не понимаю какого хрена перед конвертацией d base64 вы куда-нибудь не сохраняйте сам файл, а уже затем этот файл можно легко отдать скачивание при помощи того же URL.createObjectURL
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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