用下面的方法可以下载任意文件格式,包括HTM后缀,使用方法就是,把要下载的路径传给这个页面
<%
dim fname
fname=request("fname")download server.MapPath(fname)
Function download(fileName)
'====================================================
'fileName ------需要下载文件的地址
'例:download("C:\boot.ini")
'====================================================
    Response.Clear
    Dim fso, fl, flsize, flName
    Dim objStream, down_ContentType
    
    Set fso = server.CreateObject("Scripting.FileSystemObject")
    '检测文件是否存在,如果不存在,则中断
    If fileName = "" Then
        Response.write ("下载文件不存在!")
        Response.end
    ElseIf Not (fso.FileExists(fileName)) Then
        Response.write ("下载文件不存在!")
        Response.end
    End If
    
    Set fl = fso.getFile(fileName)
    flsize = fl.Size
    flName = fl.Name
    Set fl = Nothing
    Set fso = Nothing    Set objStream = server.CreateObject("ADODB.Stream")
    objStream.Open
    objStream.Type = 1
    objStream.LoadFromFile fileName
    
    
    Select Case LCase(Right(flName, 4))
        Case ".asf"
            down_ContentType = "video/x-ms-asf"
        Case ".avi"
            down_ContentType = "video/avi"
        Case ".doc"
            down_ContentType = "application/msword"
        Case ".zip"
            down_ContentType = "application/zip"
        Case ".xls"
            down_ContentType = "application/vnd.ms-excel"
        Case ".gif"
            down_ContentType = "image/gif"
        Case ".jpg", "jpeg"
            down_ContentType = "image/jpeg"
        Case ".wav"
            down_ContentType = "audio/wav"
        Case ".mp3"
            down_ContentType = "audio/mpeg3"
        Case ".mpg", "mpeg"
            down_ContentType = "video/mpeg"
        Case ".rtf"
            down_ContentType = "application/rtf"
        Case ".htm", "html"
            down_ContentType = "text/html"
        Case ".txt"
            down_ContentType = "text/plain"
        Case Else
            down_ContentType = "application/octet-stream"
    End Select
    
    
    
    Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
    Response.AddHeader "Content-Length", flsize
    
    Response.Charset = "UTF-8"
    Response.ContentType = down_ContentType
    
    '每次读取1K数据,并发送。当下载大文件时,可以节省系统资源
    Do While Not objStream.EOS
        Response.BinaryWrite objStream.Read(1024)
        Response.Flush
    Loop
    Response.Clear
    objStream.Close
    Set objStream = Nothing
End Function
%>

解决方案 »

  1.   

    那还有路径呢,path,加在哪,
    Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
    放在'& flName'前不?
      

  2.   

    download(fileName)是个函数啊
    你把路径传给函数就可以了 它的内部你就不需要去了解了
      

  3.   

    dim fpath,fname
    fpath=request("Csa")
    fname=fpath & request("Csb")
    download server.MapPath(fname)
    Function download(fileName)//17行
    出錯:fname="wj/文件.rar"    //這是fname的值,路徑錯在哪呀,我對server.MapPath不熟呀Server object error 'ASP 0173 : 80004005' Invalid Path Character /my/download.ASP, line 17 An invalid character was specified in the Path parameter for the MapPath method. 
      

  4.   

    rawjim(我是一个好学的新人),謝謝老兄.