2017-10-02 1 views
0

J'essaie de télécharger un fichier en cliquant sur un bouton qui ne le télécharge pas. Bien que, si je vais à l'url sur mon navigateur, le docx est téléchargé.Télécharger un fichier en utilisant l'API de chargement

Fetch demande:

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()}); 

Réponse:

enter image description here

+2

Le fichier va commencer à télécharger automatiquement si vous utilisez un tag download mrdeleon

Répondre

2

Un appel fetch soit décide avec un objet Response ou rejette avec une erreur. Si vous voulez que le corps de la réponse (qui dans votre cas est probablement un blob binaire) alors vous pouvez essayer:

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

Vous auriez encore prendre soin de l'afficher, l'écriture sur le disque, tout ce que vous voulez fais avec.

+0

Comment puis-je le convertir en docx? Il n'y a aucun moyen de télécharger le fichier directement sans avoir à passer par la conversion de blob? – AnAspiringCanadian

+0

J'ai modifié le code. – AnAspiringCanadian

+1

Que voulez-vous dire le télécharger? Voulez-vous afficher la boîte de dialogue de téléchargement de fichier standard sur certains événements et laisser l'utilisateur télécharger le fichier? Dans ce cas, vous pouvez simplement faire quelque chose comme ceci: https://stackoverflow.com/questions/3749231/download-file-using-javascript-jquery –