用下面的方法可以下载任意文件格式,包括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
%>
<%
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
%>
Response.AddHeader "Content-Disposition", "attachment; filename=" & flName
放在'& flName'前不?
你把路径传给函数就可以了 它的内部你就不需要去了解了
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.