Как осуществить загрузку файла в asp.net - PullRequest
23 голосов
/ 01 сентября 2008

Как лучше всего реализовать с веб-страницы действие загрузки с использованием asp.net 2.0?

Файлы журнала для действия создаются в каталоге с именем [Корень приложения] / Logs. У меня есть полный путь и я хочу предоставить кнопку, которая при нажатии загружает файл журнала с сервера IIS на локальный компьютер пользователя.

Ответы [ 2 ]

36 голосов
/ 01 сентября 2008

Помогает ли это:

http://www.west -wind.com / блог / сообщений / 76293.aspx

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

Response.TransmitFile - это принятый способ отправки больших файлов вместо Response.WriteFile.

11 голосов
/ 06 апреля 2010

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();
}


Обновление:

Исходный код

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

имеет "встроенный; вложение", то есть два значения для размещения содержимого.

Не знаю, когда именно это началось, но в Firefox только правильное имя файла не появлялось. Появится окно загрузки файла с названием веб-страницы и ее расширением ( pagename.aspx ). После загрузки, если вы переименуете его обратно к реальному имени; Файл успешно открыт.

Согласно этой странице , она работает на First First First Served based . Изменение значения на attachment только решило проблему.

PS: я не уверен, что это лучший метод, но проблема решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...