2013-05-20 2 views
4

J'essaie de télécharger un fichier Excel (généré dynamiquement en utilisant C# \ ASP.NET) et je reçois la boîte de dialogue IE10 View Downloads lorsque je clique sur "Ouvrir" il est dit "abc.xls couldn ' t être téléchargé "erreur, mais après avoir cliqué" Réessayer ", il ouvre le fichier .xls correctement dans la deuxième tentative.IE 10 - Problèmes de téléchargement de fichiers

Lorsque je l'ai testé dans Firefox ou Chrome, cela fonctionne très bien.

+0

Pouvez-vous partager votre code s'il vous plaît? Cela vous aidera à identifier votre problème. –

Répondre

8

Je pense que cela peut expliquer le comportement étrange:

"Content-Length and Transfer-Encoding Validation in the IE10 Download Manager"

Il semble que le bêta IE9 avait introduit content-length et transfer-encoding validation lors du téléchargement de fichiers, mais a constaté qu'il était trop problématique, car de nombreux serveurs n'a pas envoyé Valeurs correctes pour ces téléchargements traités par le code. Apparemment, ils l'ont réactivé dans IE10 et espéraient juste le meilleur. Je parierais que des valeurs précises soient envoyées quand le téléchargement est lancé devrait éclaircir ce problème. Bien sûr, ça n'aurait pas dû être un problème de commencer par ... ai yi yi.

[Modifier]

Transforme ce problème était lié (pour moi au moins) avec l'aide Response.Close() et/ou Response.End() dans le code. This article explique pourquoi vous ne devriez pas utiliser ces 2 méthodes, et pourquoi HttpApplication.CompleteRequest est la méthode de choix. La modification de nos instances Response.End() et Response.Close() à HttpApplication.CompleteRequest a résolu nos problèmes de téléchargement IE10. Comme la magie. Apparemment MSDN déconseille maintenant l'utilisation de ces 2 méthodes (malgré des années d'exemples de code MSDN les contenant), et préconise maintenant l'utilisation de HttpApplication.CompleteRequest à la place.

Nous étions toujours en guerre avec l'Eurasia ...

[/ Modifier]

+2

Je veux juste ajouter une chose importante à connaître. J'avais le même problème en téléchargeant des fichiers générés dynamiquement (CSV, XLS) avec IE10. Je dois appeler 'HttpApplication.CompleteRequest()' ** BEFORE ** appelant 'Response.End()'. Sinon, le balisage HTML de la page ASPX est toujours ajouté à mon fichier téléchargé. – stun

2

je devenais un comportement similaire - Après avoir combattu cette question pendant environ 12 heures ce qui a fonctionné pour moi:

Changer tête de réponse de

Content-type: application/application/vnd.ms-excel

Pour

Content-Type: application/octet-stream

Notez que j'ai eu un autre symptôme sous silence: je mettais

Content-Disposition: attachement; filename = « Inventory_10-10-2013.xls »

Malgré ce paramètre IE a utilisé le nom de fichier à partir de l'URL (il dit « getInventory ne pouvait pas être téléchargé » - et il a enregistré le fichier nommé à tort dans la dossier de téléchargements!).

Lorsque j'ai changé le 'Content-Type' IE a commencé à honorer le nom de fichier de l'en-tête.

Pour mémoire voici tous les en-têtes de réponse que je réglage:

  • HTTP/1.1 200 OK
  • Pragma:
  • public
  • Expire: Ven 11 octobre 2013 16h33: 38 GMT
  • Cache-Control: max-age = 1
  • Contenu-Disposition: attachement; filename = "Inventory_10-10-2013.xls"
  • Content-Transfer-Encoding: BINARY
  • Set-Cookie: fichierTéléchargement = true; path =/
  • Content-Type: application/octet-stream; charset = UTF-8
  • Content-Length: 7680
  • Date: Thu, 10 octobre 2013 16:33:38 GMT
Questions connexes