Téléchargez le pdf depuis l'API Laravel via Axios dans VueJS 3
P粉993712159
P粉993712159 2023-11-16 12:48:50
0
2
791

Bonjour, j'ai un frontend VUEJS 3 et un backend Laravel 8. Je vais télécharger le pdf enregistré dans public/pdf/temp/file.pdf

Maintenant, je passe un appel depuis VUEJS :

axios.post('/api/'+ this.url_access +'/rebuild', formData, { headers: { 'Content-Type': 'multipart/form-data', 'responseType': 'blob' }}) .then(response=>{ if(response.status == 200){ const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', 'test.pdf'); document.body.appendChild(link); link.click(); } }) .catch(error=>{ console.log(error); })

Dans le backend j'ai une fonction qui renvoie un fichier pdf :

try{ $headers = [ 'Content-Type' => 'application/pdf', ]; return response()->download($file_path, $workspace['name'] . '_' .date("Ymd").'.pdf', $headers)->deleteFileAfterSend(true); }catch(Exception $e){ return $e->getMessage(); }

Mais j'ai téléchargé le pdf avec un contenu vierge.

Quelqu'un a-t-il une idée sur ce problème ?

P粉993712159
P粉993712159

répondre à tous (2)
P粉610028841

Dans Laravel

$pdf = PDF::loadView('users.pdf', ['data' => $data]); return $pdf->output();

Dans Vue js

axios({ url: 'http://localhost:8000/api/your-route', method: 'GET', responseType: 'blob', }).then((response) => { var fileURL = window.URL.createObjectURL(new Blob([response.data], {type: 'application/pdf'})); var fileLink = document.createElement('a'); fileLink.href = fileURL; fileLink.setAttribute('download', 'file.pdf'); document.body.appendChild(fileLink); fileLink.click(); });
    P粉722521204

    Réponse

    responseType est un frère des en-têtes, pas un enfant

    axios.post('/api/'+ this.url_access +'/rebuild', formData, { headers: { 'Content-Type': 'multipart/form-data', }, 'responseType': 'blob' // responseType is a sibling of headers, not a child }) .then(response=>{ if(response.status == 200){ const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', 'test.pdf'); document.body.appendChild(link); link.click(); } }) .catch(error=>{ console.log(error); })

    Merci Phil pour l'aide.

      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!