2017-10-02 2 views
0

Ich versuche, eine Datei herunterzuladen, indem Sie auf eine Schaltfläche klicken, die Datei nicht herunterladen. Obwohl, wenn ich auf die URL in meinem Browser gehe, wird die docx heruntergeladen.Laden Sie eine Datei mit fetch api

Abrufanforderung:

const response = await fetch(`/template/${id}/docx`, { 
    method: 'GET', 
    credentials: 'include', 
}); 

const blob = await response.blob(); 

const file = new File([blob], id, {type: blob.type, lastModified: Date.now()}); 

Reaktion:

enter image description here

+2

Die Datei wird automatisch heruntergeladen, wenn Sie ein Tag verwenden. download mrdeleon

Antwort

2

Ein fetch Anruf entweder mit einem Response Objekt löst oder lehnt mit einem Fehler. Wenn Sie die Antwort Körper wollen (was in Ihrem Fall ist wahrscheinlich ein binäres Blob), dann könnten Sie versuchen:

const response = await fetch(`/template/${id}/docx`, { 
    method: 'GET', 
    credentials: 'include', 
}); 
const doc = await response.blob() 

würden Sie noch Pflege es zur Anzeige nehmen, es auf der Festplatte zu schreiben, was auch immer Sie wollen mach damit.

+0

Wie gehe ich vor, es in docx zu konvertieren? Gibt es keine Möglichkeit, die Datei direkt herunterzuladen, ohne die Blobkonvertierung durchführen zu müssen? – AnAspiringCanadian

+0

Ich habe den Code geändert. – AnAspiringCanadian

+1

Was meinst du damit, es herunterzuladen? Möchten Sie den Standarddialog zum Herunterladen von Dateien bei einem Ereignis anzeigen und den Benutzer die Datei herunterladen lassen? In diesem Fall könnten Sie einfach so etwas tun: https://stackoverflow.com/questions/3749231/download-file-using-javascript-jquery –