可以用流下载(耗内存,少用)或直接转到该文件.

asp中自定义文件下载方式.
asp中自定义文件下载方式.<%
asp中自定义文件下载方式.
asp中自定义文件下载方式.Const USE_STREAM = 0 '0.不用流(Adodb.Stream)下载 1.用流下载
asp中自定义文件下载方式.Const ALLOW_FILE_EXT = "rar,zip,chm,doc,xls,swf,mp3,gif,jpg,jpeg,png,bmp" '允许下载的文件的扩展名,防止源代码被下载
asp中自定义文件下载方式.
asp中自定义文件下载方式.Dim sDownFilePath '下载文件路径
asp中自定义文件下载方式.sDownFilePath = Trim(Request("FilePath"))
asp中自定义文件下载方式.'或者根据传过来的文件ID从数据库中获取文件路径
asp中自定义文件下载方式.
asp中自定义文件下载方式.'如果 sDownFilePath 为绝对路径,一定要将 sDownFilePath 转换为相对 本文件的相对路径
asp中自定义文件下载方式.
asp中自定义文件下载方式.'sDownFilePath = "focus.swf"
asp中自定义文件下载方式.
asp中自定义文件下载方式.Call DownloadFile(sDownFilePath)
asp中自定义文件下载方式.
asp中自定义文件下载方式.Function DownloadFile(s_DownFilePath)
asp中自定义文件下载方式.    '判断有没传递文件名
asp中自定义文件下载方式.    If IsNull(s_DownFilePath) = True Or Trim(s_DownFilePath) = "" Then
asp中自定义文件下载方式.        OutputErr "错误:先确定要下载的文件,下载失败"
asp中自定义文件下载方式.    End If
asp中自定义文件下载方式.
asp中自定义文件下载方式.    '判断扩展名是否合法
asp中自定义文件下载方式.    Dim s_FileExt
asp中自定义文件下载方式.    s_FileExt = Mid(s_DownFilePath, InstrRev(s_DownFilePath, ".")+1)
asp中自定义文件下载方式.    If InStr("," & ALLOW_FILE_EXT & ",", "," & s_FileExt & ",") <= 0 Then
asp中自定义文件下载方式.        OutputErr "错误:文件类型(" & s_FileExt & ")不允许被下载,下载失败"
asp中自定义文件下载方式.    End If
asp中自定义文件下载方式.    
asp中自定义文件下载方式.    s_DownFilePath = Replace(s_DownFilePath, "\", "/")
asp中自定义文件下载方式.
asp中自定义文件下载方式.    '为了安全,某些目录禁止下载文件,在这里处理
asp中自定义文件下载方式.    'asp中自定义文件下载方式.
asp中自定义文件下载方式.    
asp中自定义文件下载方式.    '检测服务器是否支持fso
asp中自定义文件下载方式.    Dim o_Fso
asp中自定义文件下载方式.    On Error Resume Next
asp中自定义文件下载方式.    Set o_Fso = Server.CreateObject("Scripting.FileSystemObject")
asp中自定义文件下载方式.    If Err.Number <> 0 Then
asp中自定义文件下载方式.        Err.Clear
asp中自定义文件下载方式.        OutputErr "错误:服务器不支持fso组件,下载失败"
asp中自定义文件下载方式.    End If
asp中自定义文件下载方式.
asp中自定义文件下载方式.    '取得文件名,文件大小
asp中自定义文件下载方式.    Dim s_FileMapPath
asp中自定义文件下载方式.    Dim o_File, s_FileName, n_FileLength
asp中自定义文件下载方式.    s_FileMapPath = Server.MapPath(s_DownFilePath)
asp中自定义文件下载方式.    If (o_Fso.FileExists(s_FileMapPath)) = True Then
asp中自定义文件下载方式.        Set o_File = o_Fso.GetFile(s_FileMapPath)
asp中自定义文件下载方式.        s_FileName = o_File.Name
asp中自定义文件下载方式.        n_FileLength = o_File.Size
asp中自定义文件下载方式.        o_File.Close
asp中自定义文件下载方式.    Else
asp中自定义文件下载方式.        OutputErr "错误:文件不存在,下载失败"
asp中自定义文件下载方式.    End If
asp中自定义文件下载方式.    Set o_Fso = Nothing
asp中自定义文件下载方式.
asp中自定义文件下载方式.    '判断是否下载的文件大小超过限制
asp中自定义文件下载方式.    'asp中自定义文件下载方式.    
asp中自定义文件下载方式.    
asp中自定义文件下载方式.    '如果不是用流下载,直接转到该文件
asp中自定义文件下载方式.    If USE_STREAM = 0 Then
asp中自定义文件下载方式.        Response.Redirect sDownFilePath
asp中自定义文件下载方式.        Response.end
asp中自定义文件下载方式.    End If
asp中自定义文件下载方式.
asp中自定义文件下载方式.    '检测服务器是否支持Adodb.Stream
asp中自定义文件下载方式.    On Error Resume Next
asp中自定义文件下载方式.    Set o_Stream = Server.CreateObject("Adodb.Stream")
asp中自定义文件下载方式.    If Err.Number <> 0 Then
asp中自定义文件下载方式.        Err.Clear
asp中自定义文件下载方式.        OutputErr "错误:服务器不支持Adodb.Stream组件,下载失败"
asp中自定义文件下载方式.    End If
asp中自定义文件下载方式.
asp中自定义文件下载方式.    o_Stream.Type = 1
asp中自定义文件下载方式.    o_Stream.Open
asp中自定义文件下载方式.    o_Stream.LoadFromFile s_FileMapPath 
asp中自定义文件下载方式.
asp中自定义文件下载方式.    Response.Buffer = True
asp中自定义文件下载方式.    Response.Clear
asp中自定义文件下载方式.    Response.AddHeader "Content-Disposition", "attachment; filename=" & s_FileName
asp中自定义文件下载方式.    Response.AddHeader "Content-Length", n_FileLength 
asp中自定义文件下载方式.    Response.CharSet = "UTF-8" 
asp中自定义文件下载方式.    Response.ContentType = "application/octet-stream" 
asp中自定义文件下载方式.    Response.BinaryWrite o_Stream.Read
asp中自定义文件下载方式.    Response.Flush
asp中自定义文件下载方式.
asp中自定义文件下载方式.    o_Stream.Close
asp中自定义文件下载方式.    Set o_Stream = Nothing
asp中自定义文件下载方式.
asp中自定义文件下载方式.End Function
asp中自定义文件下载方式.
asp中自定义文件下载方式.Sub OutputErr(s_ErrMsg)
asp中自定义文件下载方式.    Response.Write "<font color=red>" & s_ErrMsg & "</font>" 
asp中自定义文件下载方式.    Response.End
asp中自定义文件下载方式.End Sub
asp中自定义文件下载方式.
asp中自定义文件下载方式.%>


相关文章: