2013-06-27 3 views
0

Je développe une page web qui devrait soutenir IE10. Mes utilisateurs devraient pouvoir télécharger un fichier d'installation (.exe) mais je mettrai à jour ce fichier pour qu'il ait des versions. Supposons que le nom du fichier est file.exe mais le lien vers le fichier est commequestion url fichier IE10

<url>/file.exe?v1.1.21.0 

Ici, d'autres navigateurs (Chrome, Firefox, IE8, IE9) télécharger le fichier, mais bien téléchargements IE10 en tant que fichier . 0 (probablement à cause du point d'interrogation dans l'url). Après le téléchargement, quand je renomme comme file.exe cela fonctionne bien en tant que fichier exe, mais bien sûr, je ne peux pas attendre des utilisateurs. Je ne veux pas non plus enlever le numéro de version de l'url car alors, il pourrait télécharger un ancien fichier restant dans le cache etc. Y at-il une solution pour cela, pour télécharger le fichier avec le nom correct?

Répondre

0

Vous devez envoyer un en-tête contenant le nom du fichier Content-Disposition correct.

Content-Disposition: attachment; filename=file.exe

Si vous utilisez un serveur Apache, un coup d'oeil à ceci: https://serverfault.com/questions/101948/how-to-send-content-disposition-headers-in-apache-for-files

Mise à jour

Voici un exemple .htaccess:

SetEnvIf Request_URI "^/(file\.exe)$" FILENAME=$1 
Header set "Content-disposition" "attachment; filename=%{FILENAME}e" env=FILENAME 
UnsetEnv FILENAME 

Il sera ajouter le Content-Disposition uniquement dans le cas où l'URI de la demande est /file.exe (changez cela en fonction de vos besoins), il peut donc être ajouté en toute sécurité au cas où d'autres fichiers dans le répertoire ne devraient pas être affectés.

+0

D'après ce que je comprends, cela force le navigateur à un « Enregistrer sous » fenêtre pop-up pour enregistrer le fichier. Cependant actuellement, même si je sélectionne l'option "Enregistrer sous" lors du téléchargement du fichier, il ne se télécharge pas correctement. Par défaut, il voit le nom de fichier comme ** fichier ** et tape comme ** 0 fichier ** (à cause de ".0" à la fin, provenant du numéro de version). Même si je change le tpye en tant que "Tous les fichiers" (c'est la seule autre option), il le télécharge toujours en tant que ** fichier.0 **. – paris

+0

Il ne peut pas forcer le navigateur à quoi que ce soit, il dit simplement ce qu'il est sur le point de recevoir, la façon dont le navigateur gère les données est totalement à la hauteur du navigateur. Toutefois, l'intention du 'attachment'' Content-Disposition' est bien sûr de rendre le navigateur gère les données en téléchargement, au lieu des données en-ligne et le paramètre 'filename' supplémentaire est le nom de fichier suggéré, bien sûr, il est à nouveau en au navigateur ce qu'il fait avec cette information, cependant, la plupart du temps, tous les navigateurs respectent l'en-tête et l'utilisent sur le nom de fichier dans l'URL, tout comme IE10. Alors essayez, ça marche très bien. – ndm