При создании сайтов часто возникает необходимость в разработке функции скачивания файлов. Существует три способа скачивания файлов:
1. Код загрузки ASP
<%
имя_файла = Request.QueryString("ИмяФайла")
если имя файла = "" тогда
Ответ.Напишите «Пожалуйста, введите параметр имени файла и укажите имя загруженного файла»
еще
Response.ContentType = "приложение/поток октетов"
Response.AddHeader "content-disposition", "attachment; filename =" & filename
Установите FileStream = Server.CreateObject("Adodb.Stream")
FileStream.Mode = 3
FileStream.Type = 1
FileStream.Open
FileStream.LoadFromFile( Server.MapPath(имя файла))
Response.BinaryWrite( FileStream.Read )
FileStream.Close()
Установить FileStream = ничего
конец, если
%>Сохраните приведенный выше код в файл типа asp и используйте его следующим образом: download.asp?filename=a.gif.
2. Используйте веб-клиент
Добавьте следующий код в событие кнопки загрузки
System.Net.WebClient wc = новый System.Net.WebClient();
wc.DownloadFile( " Приведенный выше код загрузит серверный файл a.gif на диск C клиента без каких-либо подсказок. Без подсказок это довольно страшно, но иногда это необходимо сделать. Этот код также можно использовать Запустите программу на рабочем столе.
3. Код загрузки ASP NET с подсказками для загрузки.
//Открываем файл для загрузки
System.IO.FileStream r = новый System.IO.FileStream(FileName, System.IO.FileMode.Open);
//Установим основную информацию
Ответ.Буфер = ложь;
Response.AddHeader("Соединение", "Keep-Alive");
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(FileName));
Response.AddHeader("Content-Length", r.Length.ToString());
пока (правда)
{
//Открываем буферное пространство
буфер байт[] = новый байт[1024];
//Читаем данные файла
int leng = r.Read(буфер, 0, 1024);
if (leng == 0)//До конца файла, end
перерыв;
if (leng == 1024)//Длина считанных данных файла равна длине буфера, и данные в буфер записываются напрямую
Response.BinaryWrite(буфер);
еще
{
//Чтение данных файла меньше размера буфера, переопределение размера буфера, используется только для чтения последнего блока данных файла
байт[] b = новый байт[длина];
for (int i = 0; я <длина; я++)
б[я] = буфер[я];
Response.BinaryWrite(б);
}
}
r.Close();//Закрываем загруженный файл
Response.End(); //Завершить загрузку файла. Этот метод имеет окно запроса на загрузку, поэтому сервер может узнать, когда загрузка будет завершена.