2009-07-01 5 views
2

J'ai actuellement un TreeView montrant un répertoire dans une page Web. Je ne pense pas que vous pouvez capturer des événements de clic sur un nœud donc à la place je crée le lien de navigation à la même page qui traite un paramètre (chemin).Comment envoyer un type de fichier via la redirection dans ASP.NET?

J'ai essayé deux choses:


Response.ContentType = "text/txt"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName); 
Response.Write(file.ToString()); 
Response.End(); 

^^ Le code ci-dessus ne fonctionne vraiment pour les fichiers texte (ou quel que soit l'extension que je veux définir). ^^


Le code ci-dessous écrit le fichier sous la forme d'un ensemble de caractères dans le navigateur.

if (!IsPostBack) 
{ 
    string path = Request["path"]; 

    if ((path != "") && (path != null)) 
    { 
     Response.TransmitFile(path); 
     Response.End(); 
    } 
} 

est-il une bonne solution à ce que je suis juste manquant? Je dois envoyer n'importe quel fichier avec une option pour l'enregistrer quand on le sélectionne dans un TreeView.

Merci d'avance pour votre aide!

+0

Vous devez définir le type de contenu et la disposition. –

Répondre

4

Nous venons de faire fonctionner ... Je pense

System.IO.FileInfo file = new System.IO.FileInfo(path); 

Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = "application/octet-stream"; 
Response.WriteFile(file.FullName); 
Response.End(); 
2

C'est le meilleur article que je pourrais trouver: http://www.west-wind.com/weblog/posts/76293.aspx

fichier sur le disque:

Response.ContentType = "image/jpeg"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=Image.jpg"); 
Response.TransmitFile(Server.MapPath("~/images/image.jpg")); 
Response.End(); 

Generated fichier:

Bitmap bmp = GenerateImage();  
Response.ContentType = "image/jpeg"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=Image.jpg");  
bmp.Save(Response.OutputStream, ImageFormat.Jpeg); 
Questions connexes