Вы можете использовать потоковую загрузку (занимающую память, использовать меньше) или перейти непосредственно к файлу.
<%
Const USE_STREAM = 0 '0. Загрузка без потока (Adodb.Stream) 1. Загрузка с потоком.
Const ALLOW_FILE_EXT = "rar,zip,chm,doc,xls,swf,mp3,gif,jpg,jpeg,png,bmp" 'Разрешить расширение загруженного файла, чтобы предотвратить загрузку исходного кода.
Dim sDownFilePath 'Путь к файлу для загрузки
sDownFilePath = Trim(Request("FilePath"))
'Или получить путь к файлу из базы данных на основе переданного идентификатора файла
' Если sDownFilePath является абсолютным путем, обязательно преобразуйте sDownFilePath в относительный путь к этому файлу.DownFilePath
= "focus.swf"
Вызов DownloadFile(sDownFilePath)
Функция DownloadFile (s_DownFilePath)
'Определить, передается ли имя файла
Если IsNull(s_DownFilePath) = True или Trim(s_DownFilePath) = "" Тогда
OutputErr «Ошибка: сначала определите файл для загрузки, загрузка не удалась»
End If
'Определить, является ли расширение законным
Dims_FileExt
s_FileExt = Mid(s_DownFilePath, InstrRev(s_DownFilePath, ".")+1)
Если InStr("," & ALLOW_FILE_EXT & ",", "," & s_FileExt & ",") <= 0 Тогда
OutputErr «Ошибка: тип файла («& s_FileExt &») не разрешен для загрузки, и загрузка не удалась»
Конец, если
s_DownFilePath = replace(s_DownFilePath, "", "/")
'По соображениям безопасности загрузка файлов запрещена в некоторых каталогах и обрабатывается здесь.
'
'Проверяем, поддерживает ли сервер fso
Дим о_Фсо
При ошибке Возобновить Далее
Установите o_Fso = Server.CreateObject("Scripting.FileSystemObject")
Если Номер ошибки <> 0 Тогда
Ошиб.Очистить
OutputErr «Ошибка: сервер не поддерживает компонент fso, и загрузка не удалась»
End If
'Получить имя файла, размер файла
Dims_FileMapPath
Dim o_File, s_FileName, n_FileLength
s_FileMapPath = Server.MapPath(s_DownFilePath)
Если (o_Fso.FileExists(s_FileMapPath)) = Истина Тогда
Установите o_File = o_Fso.GetFile(s_FileMapPath)
s_FileName = o_File.Name
n_FileLength = o_File.Size
o_File.Close
Еще
OutputErr «Ошибка: файл не существует, загрузка не удалась»
Конец, если
Set o_Fso = Nothing
'Определить, превышает ли размер загруженного файла предел
'
'Если он не загружается потоком, перейдите непосредственно к файлу
Если USE_STREAM = 0 Тогда
Response.Redirect sDownFilePath
Ответ.конец
End If
'Определить, поддерживает ли сервер Adodb.Stream
При ошибке Возобновить Далее
Установите o_Stream = Server.CreateObject("Adodb.Stream")
Если Номер ошибки <> 0 Тогда
Ошиб.Очистить
OutputErr «Ошибка: сервер не поддерживает компонент Adodb.Stream, и загрузка не удалась»
Конец, если
o_Stream.Tyep = 1
o_Stream.Open
o_Stream.LoadFromFile s_FileMapPath
Response.Buffer = True
Ответ.Очистить
Response.AddHeader "Content-Disposition", "attachment; filename=" & s_FileName
Response.AddHeader "Content-Length", n_FileLength
Response.CharSet = "UTF-8"
Response.ContentType = "приложение/поток октетов"
Response.BinaryWrite o_Stream.Read
Response.Flush
o_Stream.Close
Установить o_Stream = Nothing
End Function
Sub OutputErr(s_ErrMsg)
Response.Write "<font color=red>" & s_ErrMsg & "</font>"
Ответ.Конец
Конец подписки
%>
http://www.cnblogs.com/jiny-z/archive/2006/08/29/489102.html