Comment mettre en œuvre un téléchargement de fichier asp.net

Quelle est la meilleure façon d'implémenter, à partir d'une page Web une action de téléchargement en utilisant asp.net 2.0?

Log les fichiers pour une action sont créés dans un répertoire appelé [Application Root]/Logs. J'ai le chemin complet et je veux fournir un bouton, qui une fois cliqué va télécharger le fichier journal du serveur IIS au pc local des utilisateurs.

23
demandé sur Community 2008-09-01 13:21:14

2 réponses

Est-ce que cela aide:

http://www.west-wind.com/weblog/posts/76293.aspx

Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment; filename=logfile.txt");
Response.TransmitFile( Server.MapPath("~/logfile.txt") );
Response.End();

Réponse.TransmitFile est le moyen accepté d'envoyer de gros fichiers, au lieu de la réponse.WriteFile.

34
répondu Martin 2008-09-01 09:31:57

http://forums.asp.net/p/1481083/3457332.aspx

string filename = @"Specify the file path in the server over here....";
FileInfo fileInfo = new FileInfo(filename);

if (fileInfo.Exists)
{
   Response.Clear();
   Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
   Response.AddHeader("Content-Length", fileInfo.Length.ToString());
   Response.ContentType = "application/octet-stream";
   Response.Flush();
   Response.TransmitFile(fileInfo.FullName);
   Response.End();
}



mise à Jour:

le code initial

Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name);

a "inline; attachment", c'est-à-dire deux valeurs pour la Disposition du contenu.

Je ne sais pas quand exactement il a commencé, mais dans Firefox le nom propre du fichier n'apparaissait pas. La boîte de téléchargement de fichier apparaît avec le nom de la page Web et son extension (pagename.aspx). Après le téléchargement, si vous rétablissez le nom réel; le fichier s'ouvre correctement.

selon cette page, il fonctionne sur premier Arrivé, Premier Servi. La modification de la valeur attachment seulement résolu le problème.

PS: Je ne suis pas sûr qu'il s'agisse de la meilleure pratique, mais la question est résolue.

11
répondu BiLaL 2013-10-13 15:04:54