Você pode usar o download por streaming (consumindo memória, usa menos) ou ir diretamente para o arquivo.
<%
Const USE_STREAM = 0 '0. Download sem stream (Adodb.Stream) 1. Download com stream
Const ALLOW_FILE_EXT = "rar,zip,chm,doc,xls,swf,mp3,gif,jpg,jpeg,png,bmp" 'Permitir a extensão do arquivo baixado para evitar que o código fonte seja baixado
Dim sDownFilePath 'Caminho do arquivo de download
sDownFilePath = Trim(Request("FilePath"))
'Ou obtenha o caminho do arquivo do banco de dados com base no ID do arquivo passado
' Se sDownFilePath for um caminho absoluto, certifique-se de converter sDownFilePath em um caminho relativo para este arquivo'sDownFilePath
= "focus.swf"
Chamar DownloadFile(sDownFilePath)
Função DownloadFile (s_DownFilePath)
'Determina se o nome do arquivo é passado
Se IsNull(s_DownFilePath) = True ou Trim(s_DownFilePath) = "" Então
OutputErr "Erro: primeiro determine o arquivo para download, o download falhou"
End If
'Determina se a extensão é legal
Dims_FileExt
s_FileExt = Mid(s_DownFilePath, InstrRev(s_DownFilePath, ".")+1)
Se InStr("," & ALLOW_FILE_EXT & ",", "," & s_FileExt & ",") <= 0 Então
OutputErr "Erro: O tipo de arquivo (" & s_FileExt & ") não pode ser baixado e o download falhou"
Terminar se
s_DownFilePath = Replace(s_DownFilePath, "", "/")
'Por razões de segurança, o download de arquivos é proibido em alguns diretórios e é tratado aqui.
'
'Verifica se o servidor suporta fso
Dim o_Fso
Em caso de erro, retomar o próximo
Definir o_Fso = Server.CreateObject("Scripting.FileSystemObject")
Se Err.Number <> 0 Então
Err.Limpar
OutputErr "Erro: O servidor não suporta o componente fso e o download falhou"
End If
'Obter nome do arquivo, tamanho do arquivo
Dims_FileMapPath
Dim o_File, s_FileName, n_FileLength
s_FileMapPath = Servidor.MapPath(s_DownFilePath)
Se (o_Fso.FileExists(s_FileMapPath)) = Verdadeiro Então
Definir o_File = o_Fso.GetFile(s_FileMapPath)
s_NomeArquivo = o_Arquivo.Nome
n_FileLength = o_File.Size
o_File.Fechar
Outro
OutputErr “Erro: arquivo não existe, download falhou”
Terminar se
Set o_Fso = Nothing
'Determina se o tamanho do arquivo baixado excede o limite
'
'Se não for baixado por stream, vá direto para o arquivo
Se USE_STREAM = 0 Então
Response.Redirect sDownFilePath
Resposta.fim
End If
'Detecta se o servidor suporta Adodb.Stream
Em caso de erro, retomar o próximo
Definir o_Stream = Server.CreateObject("Adodb.Stream")
Se Err.Number <> 0 Então
Err.Limpar
OutputErr “Erro: O servidor não suporta o componente Adodb.Stream e o download falhou”
Fim se
o_Stream.Tyep = 1
o_Stream.Open
o_Stream.LoadFromFile s_FileMapPath
Response.Buffer = Verdadeiro
Resposta.Limpar
Response.AddHeader "Disposição de conteúdo", "anexo; nome do arquivo =" & s_FileName
Response.AddHeader "Comprimento do conteúdo", n_FileLength
Response.CharSet = "UTF-8"
Response.ContentType = "aplicativo/fluxo de octetos"
Response.BinaryWrite o_Stream.Read
Response.Flush
o_Stream.Close
Definir o_Stream = Nada
End Function
Sub OutputErr (s_ErrMsg)
Response.Write "<font color=red>" & s_ErrMsg & "</font>"
Resposta.Fim
Fim Sub
%>
http://www.cnblogs.com/jiny-z/archive/2006/08/29/489102.html