FORÇAR DOWNLOAD DE ARQUIVO COM JAVASCRIPT E LARAVEL PHP

Tenho um arquivo PDF hospedado no servidor onde ao clicar em um link no meu site é executada uma função javascript para baixar o PDF. Os browses atuais já tem o recurso para exibir o PDF em uma nova aba dentro do próprio browses, e por este motivo o arquivo PDF não baixa mais automaticamente, porém estava com uma demanda onde ao clicar no link seria necessário forçar o download do PDF paro o dispositivo do usuário e não exibir o mesmo no browser. Depois de muitas tentativas cheguei neste código que resolveu meu problema do dia.

No Front-end:


<a onclick="donwloadArquivo()" href="#">Baixar arquivo PDF</a>

<script>
donwloadArquivo () {
window.open('http://localhost:8000/api/forcar-download-arquivo', '_blank')
}
</script>

No Back-end:

<?php

public function forcarDownloadArquivo(){
// Caminho real do arquivo PDF
$filePath = public_path('download/Arquivo.pdf');

// Verifique se o arquivo realmente existe
if (file_exists($filePath)) {

$headers = [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="downloaded_file.pdf"',
];

return response()->download($filePath, 'Novo_Nome_Arquivo.pdf', $headers);

} else {
// Caso o arquivo não exista, você pode retornar uma resposta de erro ou redirecionar, conforme necessário.
return response()->json(['error' => 'Arquivo não encontrado'], 404);
}
}

?>

0 comentários:

Postar um comentário