2010-07-25 5 views
1

J'essaie d'écrire du code qui télécharge un fichier situé sur le serveur. mais la boîte de dialogue Enregistrer sous ne s'ouvre pas dans IE.Problème avec la boîte de dialogue Enregistrer sous dans IE 7,8 dans ASP.NET

i essayé response.redirect, j'ai essayé

Response.Clear(); 
Response.ContentType = "text/csv"; 
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileNameDisplay); 
Response.WriteFile(Server.MapPath(pathName + fileNameUnique)); 
Response.Flush(); 
Response.End(); 

tout fonctionne sur Firefox et Chrome, mais pas dans Internet Explorer. Je sais qu'il existe une option de sécurité pour cela en sécurité ---> niveau personnalisé ---> Téléchargements ---> invite automatique pour les téléchargements de fichiers, qui est toujours en mode désactivé et je dois le basculer pour activer dans l'ordre ça marche, mais je ne veux pas que mes utilisateurs s'en occupent. Comment puis-je surmonter ce «problème de sécurité»?

Y a-t-il une bonne façon de traiter les fichiers de téléchargement? quel est le bon code pour le faire?

merci, gadym

+0

-t-il fonctionne pas dans IE 6 7,8? – abatishchev

Répondre

0

Vous devez dire explicitement qu'il ne se contente pas ouvert, add-têtes suivants:

Response.AppendHeader("Content-Disposition", "attachment; filename=" + fname); 
Response.AppendHeader("Content-Transfer-Encoding", "binary"); 

En outre, il est fortement recommandé de définir la longueur du fichier explicite

Response.AppendHeader("Content-Length", responseContentLength.ToString()); 
0
var info = new FileInfo(path); 

Response.Clear(); 

Response.AppendHeader("Content-Disposition", String.Concat("attachment; filename=", info.Name)); 
Response.AppendHeader("Content-Length", info.Length.ToString(System.Globalization.CultureInfo.InvariantCulture)); 
Response.AppendHeader("Content-Transfer-Encoding", "binary"); 
Response.ContentType = "text/csv"; 

Response.WriteFile(info.FullName, true); 
Response.End(); 
+0

merci pour vos réponses. mais ça ne marche toujours pas. il ne me donne aucune erreur. juste ne pas ouvrir. est-ce parce que j'ai besoin d'ajouter quelques définitions au serveur? (types mime, options de dossier, etc.)? aidez s'il vous plaît. merci, gadym. – gadym

+0

@gadym: Il est douteux que vous ayez besoin de configurer un type MIME supplémentaire. Pas d'erreur? Pas de popup? Avez-vous essayé de l'exécuter dans un autre environnement où d'autres préférences de sécurité? – abatishchev

+0

oui. dans ma machine locale cela fonctionne bien. mais quand je télécharge le code sur le serveur c'est le problème.pas de popup et aucune erreur ne se produit. seulement si j'ajoute le lien aux sites de confiance cela fonctionnera. mais comment les gens téléchargent-ils des fichiers à partir de sites sans traiter les préfenences de sécurité? – gadym

0

abatishchev, t Hank vous pour m'aider. J'ai trouvé une soultion à mon problème.

J'ai créé une fenêtre de dialogue (appelons-la 'DownloadWindow') qui contient une balise 'A HREF' vide. (il TEMOIGNE - 'cliquez ici pour télécharger)

Après avoir cliqué sur un bouton télécharger (icône EXCEL/CSV) sur ma page par défaut (ce qui crée mon fichier dynamicly), je charge la fenêtre de dialogue (' DownloadWindow ') puis je répète le lien' a href 'vers l'URL du fichier que j'ai créé plus tôt afin que mes utilisateurs puissent le télécharger depuis mon serveur.

Maintenant, Internet Explorer a fait apparaître la boîte de dialogue Ouvrir/Enregistrer/Annuler.

c'est un peu ennuyeux mais ça a résolu mon problème.

0

J'ai eu le même problème quand mon lien pour le téléchargement du fichier a été fait en utilisant:

<a href="DownloadFile.aspx"> 
    <input type="image" src="~/virtual/path/to/image.png" runat="server" /> 
</a> 

Le problème a disparu quand je l'ai changé:

<a href="DownloadFile.aspx"> 
    <img src="~/virtual/path/to/image.png" runat="server" /> 
</a> 
Questions connexes