web-dev-qa-db-fra.com

Le fichier s'ouvre au lieu d'être téléchargé dans Internet Explorer dans un lien href

<a href="path/to/file/filename.xxx" download="filename.xxx">filename</a>'

Lorsque je clique sur le lien, mon nom de fichier.xxx devrait être téléchargé.

Cela fonctionne parfaitement en chrome. Mais dans Internet Explorer, il ouvre le fichier au lieu de le télécharger. Quel pourrait être le problème? Y a-t-il des propriétés à ajouter pour que cela fonctionne, par exemple.

Et aussi j'ai besoin d'un exemple de téléchargement de fichier qui fonctionne pour tous les navigateurs.

21
Ebenezar John Paul

L'attribut download n'est pas pris en charge dans IE (voir http://caniuse.com/#search=download%20attribute ).

Cela suggère que l'attribut de téléchargement n'est pris en charge que par firefox, chrome, opera et la dernière version du navigateur de blackberry.

Pour les autres navigateurs, vous devrez utiliser des méthodes plus traditionnelles pour forcer le téléchargement. C’est-à-dire que le code côté serveur est nécessaire pour définir un en-tête Content-Type et Content-Disposition approprié permettant au navigateur de télécharger l’élément (ou une astuce selon votre point de vue). Les en-têtes devraient ressembler à ceci:

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"

(merci à antyrat pour le copier/coller des en-têtes)

18
Chris

Il devrait être corrigé côté serveur. Votre serveur doit renvoyer ces en-têtes pour ces types de fichiers:

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"
10
antyrat

Zip votre fichier (.Zip) et IE donnera à l'utilisateur la possibilité d'ouvrir ou de télécharger le fichier.

1
Jason

Pour le serveur Apache2:

AddType application/octect-stream .ova

L'emplacement du fichier dépendra de la version d'Apache2 en particulier - la nôtre se trouve dans /etc/Apache2/mods-available/mime.conf.

Référence:

https://askubuntu.com/questions/610645/how-to-configure-Apache2-to-download-files-directly

1
gerardw

Cela doit être une question d'en-têtes http.

voir ici: En-têtes HTTP pour le téléchargement de fichiers

Le serveur doit indiquer à votre navigateur de télécharger le fichier en envoyant 

Content-Type: application/octet-stream; 
Content-Disposition: attachment;

dans les en-têtes

0
Armel Larcier

Ce n'est pas un problème de code. Ce sont vos paramètres par défaut IE

Pour changer le réglage "toujours ouvert":

  1. Dans l'Explorateur Windows, cliquez sur le menu "Outils", choisissez "Options des dossiers".
  2. Dans la fenêtre qui apparaît, cliquez sur l'onglet "Types de fichiers", puis faites défiler la liste jusqu'à ce que vous trouviez l'extension de fichier que vous souhaitez modifier (elles sont classées par ordre alphabétique). Par exemple, si Internet Explorer essaie toujours d'ouvrir les fichiers .Zip, faites défiler la liste jusqu'à trouver l'entrée "Zip". 
  3. Cliquez sur le type de fichier, puis sur le bouton "Avancé".
  4. Cochez la case "Confirmer après téléchargement", puis cliquez sur OK> Fermer.

EDIT: Si vous me demandez, au lieu d’apporter des modifications au code, j’ajouterais le texte suivant "Utilisateurs d’Internet Explorer: Pour télécharger le fichier," Clic droit "le lien et Appuyez sur " Enregistrer la cible sous " pour télécharger le fichier. "

EDIT 2: CETTE solution fonctionnera parfaitement pour vous. C'est une solution que je viens de copier de l'autre réponse. Je n'essaie pas de le faire passer pour moi

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.xxx\"

Cependant, vous devez vous assurer que vous spécifiez le type de fichier (s) autorisé (s). Vous avez mentionné dans votre message que vous le souhaitiez pour tout type de fichier. Ce sera un problème.

Par ex. Si votre site contient des images et si l'utilisateur final clique sur ces images, elles seront téléchargées sur son ordinateur au lieu de s'ouvrir sur une nouvelle page. Vous avez le point. Vous devez donc spécifier les extensions de fichier.

0
AnaMaria

Il est connu problème d’en-têtes HTTP avec Internet Explorer. Essayez de modifier le fichier .htaccess de votre serveur (si vous utilisez Apache) et incluez les règles suivantes:

# IE: force download of .xxx files
AddType application/octect-stream .xxx
<Files *.xxx>
  ForceType application/octet-stream
  Header Set Content-Disposition attachment
</Files>
0
bodi0