点击下载的地方跳转:
<a href=DownDocs.asp?docs_id=<%=id%> target=print_blank>下载附件</a>
新建一个Downdoc.ASP文件,代码如下
<%
dim id
dim upload_name,upload_url
if not isempty(request("docs_id")) then
id=cint(request("docs_id"))
sql="select * from "tb" where id="&id
set rs=server.createobject("adodb.recordset")
rs.Open sql,conn,1,2
if rs.EOF or rs.BOF then
else
if not (isnull(rs("upload_name")) or isempty(rs("upload_name"))) then
upload_name=trim(rs("upload_name"))
end if
if not (isnull(rs("upload_url")) or isempty(rs("upload_url"))) then
upload_url=trim(rs("upload_url"))
end if
rs.Close
set rs=nothing
end if
'response.Write server.MapPath(("../admin/") &upload_url)
'response.End
'取得要下载的文件,如果不为空。就下载
dim url,trueurl
'url="下载文件路径和下载文件名"
dim objStream
url=upload_url
fname=upload_name
trueurl=server.MapPath(("../admin/") &url)
'response.Write trueurl
Response.Buffer=true '开启缓存
'response.Write trueurl
set objStream=server.CreateObject("adodb.stream")
objStream.Type=1 '以二进制读取模式
objStream.Open
objStream.LoadFromFile trueurl '读取文件
set objFso=server.CreateObject("scripting.filesystemobject")
set fn=objFso.GetFile(trueurl)
flsize=fn.size
flname=fname
select case lcase(right(flname,4))
case ".asf"
ContentType="video/x-ms-asf"
case ".avi"
ContentType="video/avi"
case ".doc"
ContentType="application/msword"
case ".zip"
ContentType="application/zip"
case ".xls"
ContentType="application/vnd.ms-excel"
case ".gif"
ContentType="image/gif"
case ".jpg","jpeg"
ContentType="image/jpeg"
case ".wav"
ContentType="audio/wav"
case ".mp3"
ContentType="audio/mpeg3"
case ".mpg", "mpeg"
ContentType="video/mpeg"
case ".rtf"
ContentType="application/rtf"
case ".htm","html"
ContentType="text/html"
case ".txt"
ContentType="text/plain"
case ".pdf"
ContentType="application/pdf"
Case ".ASP", ".ASA", "ASPX", "ASAX", ".MDB"
Response.Write "受保护文件,不能下载."
Response.End
case else
ContentType="appliation/octet-stream"
end select
Response.AddHeader "Content-Disposition", "attachment; filename="&flname
Response.AddHeader "Content-Length", flsize
Response.CharSet="UTF-8"
Server.ScriptTimeout = 600
Response.ContentType=ContentType
Response.BinaryWrite objStream.Read '以二进制的方式输出至客户端浏览器
Response.Flush '边缓存边输出
Response.Clear()
objStream.Close
set objStream=nothing
set fn=nothing
set objFso=nothing
end if
%>
如果文件过大提示下载失败,请设置iis中asp限制属性中的大小