针对有网友说看不见文章内容, 现提示如下: 点击每一个标题行任一地方都会展开和隐藏此文章内容(不要点击标题). 目前展开隐藏功能只支持IE浏览器,虽然可以改成支持FF浏览器,不过现在一直没时间去弄,等有时间再修改了。 |
blog名称:乱闪Blog 日志总数:267 评论数量:1618 留言数量:-26 访问次数:2654577 建立时间:2005年1月1日 |
|

| |
论坛帖子附件的防盗链实现
|
作者:DLL
方法一:
<% '****************************** '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.endend if if Request.Cookies("Logined")="" then response.redirect "/login.asp" '需要登陆!end ifFunction GetFileName(longname)'/folder1/folder2/file.asp=>file.asp while instr(longname,"/") longname = right(longname,len(longname)-1) wend GetFileName = longnameEnd FunctionDim StreamDim ContentsDim FileNameDim TrueFileNameDim FileExtConst adTypeBinary = 1FileName = Request.QueryString("FileName")if FileName = "" Then Response.Write "无效文件名!" Response.EndEnd ifFileExt = Mid(FileName, InStrRev(FileName, ".") + 1)Select Case UCase(FileExt) Case "ASP", "ASA", "ASPX", "ASAX", "MDB" Response.Write "非法操作!" Response.EndEnd SelectResponse.Clearif 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 ifResponse.AddHeader "content-disposition", "attachment; filename=" & GetFileName(Request.QueryString("FileName"))Set Stream = server.CreateObject("ADODB.Stream")Stream.Type = adTypeBinaryStream.Openif lcase(right(FileName,3))="pdf" then '设置pdf类型文件目录 TrueFileName = "/the_pdf_file_s/"&FileNameend if if lcase(right(FileName,3))="doc" then '设置DOC类型文件目录 TrueFileName = "/my_D_O_C_file/"&FileNameend ifif lcase(right(FileName,3))="gif" or lcase(right(FileName,3))="jpg" or lcase(right(FileName,3))="png" then TrueFileName = "/all_images_/"&FileName '设置图像文件目录end ifStream.LoadFromFile Server.MapPath(TrueFileName)While Not Stream.EOS Response.BinaryWrite Stream.Read(1024 * 64)WendStream.CloseSet Stream = NothingResponse.FlushResponse.End%> |
|
|