В настоящее время у меня есть TreeView, показывающий каталог на веб-странице. Я не думаю, что вы можете записывать события click на Node, поэтому вместо этого я создаю ссылку навигации на ту же страницу, которая обрабатывает параметр (путь).
Я пробовал пару вещей:
Response.ContentType = "text/txt";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.Write(file.ToString());
Response.End();
^^ Код выше действительно работает только для текстовых файлов (или любого другого расширения, которое я хочу определить). ^^
Нижеприведенный код записывает файл в виде набора символов в браузер.
if (!IsPostBack)
{
string path = Request["path"];
if ((path != "") && (path != null))
{
Response.TransmitFile(path);
Response.End();
}
}
Есть ли хорошее решение для этого, я просто отсутствую? Мне нужно отправить любой файл с возможностью сохранения его при выборе из TreeView.
Заранее благодарим за помощь!
Просто он работал, я думаю...
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();
Это лучшая статья, которую я могу найти: http://www.west-wind.com/weblog/posts/76293.aspx
Файл на диске:
Response.ContentType = "image/jpeg";
Response.AppendHeader("Content-Disposition", "attachment; filename=Image.jpg");
Response.TransmitFile(Server.MapPath("~/images/image.jpg"));
Response.End();
Сгенерированный файл:
Bitmap bmp = GenerateImage();
Response.ContentType = "image/jpeg";
Response.AppendHeader("Content-Disposition", "attachment; filename=Image.jpg");
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);