<%
'蚍蜉中文站提供本程序http://www.pifoo.com
'程序编写飞云(Jspadmin)
'你可以自由引用或转载,但请保留此信息或连接
function download(f,n)
'f文件全路径,n下载文件的文件名
on error resume next
Set S=CreateObject("Adodb.Stream")
S.Mode=3
S.Type=1
S.Open
S.LoadFromFile(f)
if Err.Number>0 then
Reaponse.status="404"
else
Response.ContentType="application/octet-stream"
Response.AddHeader "Content-Disposition:","Attachment;filename="&n
Range=Mid(Request.ServerVariables("HTTP_RANGE"),7)
if Range="" then
Response.BinaryWrite(S.Read)
else
S.Postion=Clng(Split(Range,"-")(0))
Response.BinaryWrite(S.Read)
end if
end if
Response.end
end function
dim filename
'filename="index.htm"
filename="1.txt" '设置文件名在这里
call download(server.MapPath(filename),filename)
%>
方法一: <%
'******************************
'Write By: DLL
'NetBuilder 出品
'文件名使用URL参数/表单项传递,项名为FileName,对GIF和JPG直接输出图片流,其他文件则一律弹出下载提示框
'******************************
On Error Resume Next
Response.Buffer = True
Response.Clear
Const HidDir = "../XBB2003DFSDADA/" '根据你的文件所在目录修改
SUB UseStream(FileName,FileNameString)
Dim FileStream,File,FileContentType,IsAttachment
Set FileStream = Server.CreateObject("ADODB.Stream")
FileStream.Open
FileStream.Type = 1
File = server.MapPath(FileName)
FileStream.LoadFromFile(File)
FileContentType = GetContentType(FileName)
If FileContentType <> "image/gif" And FileContentType <> "image/jpeg" Then
IsAttachment = "attachment; "
Else
IsAttachment = ""
End If
Response.AddHeader "Content-Disposition", IsAttachment & "filename=" & FileNameString
Response.AddHeader "Content-Length", FileStream.Size
Response.Charset = "UTF-8"
Response.ContentType = FileContentType
Response.BinaryWrite FileStream.Read
Response.Flush
FileStream.Close
Set FileStream = Nothing
End SUB
Function GetFilePath(FileName,HiddenDir) '限制盗链的函数,当来源地址中的域名和当前文件地址的域名不同时则输出自定义错误图片NoImg.gif,您也可以设置为用Session限制
Dim Server_v1,Server_v2
Server_v1 = Cstr(Request.ServerVariables("HTTP_REFERER"))
Server_v2 = Cstr(Request.ServerVariables("SERVER_NAME"))
’If Server_v1<>"" And Mid(Server_v1,8,Len(Server_v2)) = Server_v2 Then
GetFilePath = HiddenDir & FileName
’Else
’GetFilePath = "NoImg.gif"
’End If
End Function
Function GetContentType(FlName)
Select Case lcase(Right(flName, 4))
Case ".asf"
GetContentType = "video/x-ms-asf"
Case ".avi"
GetContentType = "video/avi"
Case ".doc"
GetContentType = "application/msword"
Case ".zip"
GetContentType = "application/zip"
Case ".xls"
GetContentType = "application/vnd.ms-excel"
Case ".gif"
GetContentType = "image/gif"
Case ".jpg", "jpeg"
GetContentType = "image/jpeg"
Case ".wav"
GetContentType = "audio/wav"
Case ".mp3"
GetContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
GetContentType = "video/mpeg"
Case ".rtf"
GetContentType = "application/rtf"
Case ".htm", "html"
GetContentType = "text/html"
Case ".txt"
GetContentType = "text/plain"
Case Else
GetContentType = "application/octet-stream"
End Select
End Function
Dim FileName,FilePath
FileName = Trim(Request("FileName"))
FilePath = GetFilePath(FileName,HidDir)
If Lcase(Right(FilePath, 4)) = ".gif" Then '如果是GIF文件则可直接用Server.Execute输出它的二进制流.
Response.AddHeader "Content-Disposition", "filename=" & FileName
Response.AddHeader "Content-Length", FileStream.Size
Response.Charset = "UTF-8"
Response.ContentType = GetContentType(FileName)
Server.Execute(FilePath)
If err.Number <> 0 Then
err.Clear
Server.Execute("NoImg2.gif")
Response.End()
End If
Else '如果不是GIF图象则使用ADODB.STREAM对象输出其二进制流
UseStream FilePath,FileName
If Err.Number <> 0 Then
Err.Clear
Server.Execute("NoImg2.gif")
End If
End If
如果程序出错则输出自定义错误图片NoImg2.gif
%>
方法二: <%
From_url = Cstr(Request.ServerVariables("HTTP_REFERER"))
Serv_url = Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(From_url,8,len(Serv_url)) <> Serv_url then
response.write "非法链接!" '防止盗链
response.end
end if
if Request.Cookies("Logined")="" then
response.redirect "/login.asp" '需要登陆!
end if
Function GetFileName(longname)'/folder1/folder2/file.asp=>file.asp
while instr(longname,"/")
longname = right(longname,len(longname)-1)
wend
GetFileName = longname
End Function
Dim Stream
Dim Contents
Dim FileName
Dim TrueFileName
Dim FileExt
Const adTypeBinary = 1
FileName = Request.QueryString("FileName")
if FileName = "" Then
Response.Write "无效文件名!"
Response.End
End if
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1)
Select Case UCase(FileExt)
Case "ASP", "ASA", "ASPX", "ASAX", "MDB"
Response.Write "非法操作!"
Response.End
End Select
Response.Clear
if lcase(right(FileName,3))="gif" or lcase(right(FileName,3))="jpg" or lcase(right(FileName,3))="png" then
Response.ContentType = "image/*" '对图像文件不出现下载对话框
else
Response.ContentType = "application/ms-download"
end if
Response.AddHeader "content-disposition", "attachment; filename=" & GetFileName(Request.QueryString("FileName"))
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = adTypeBinary
Stream.Open
if lcase(right(FileName,3))="pdf" then '设置pdf类型文件目录
TrueFileName = "/the_pdf_file_s/"&FileName
end if
if lcase(right(FileName,3))="doc" then '设置DOC类型文件目录
TrueFileName = "/my_D_O_C_file/"&FileName
end if
if lcase(right(FileName,3))="gif" or lcase(right(FileName,3))="jpg" or lcase(right(FileName,3))="png" then
TrueFileName = "/all_images_/"&FileName '设置图像文件目录
end if
Stream.LoadFromFile Server.MapPath(TrueFileName)
While Not Stream.EOS
Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End
%>