<% Dim Str Dvbbs.Stats="查看文件" Dim Downid,Rs If CInt(Dvbbs.GroupSetting(49))=0 Or Dvbbs.GroupSetting(61)=0 Then Dvbbs.AddErrCode(54) If request("id")="" Then Dvbbs.AddErrCode(35) ElseIf Not IsNumeric(request("id")) Then Dvbbs.AddErrCode(35) Else DownID=Clng(request("id")) End If Dvbbs.ShowErr() '论坛下载限制(包括文章、积分、金钱、魅力、威望、精华、被删数、注册时间) Dim BoardUserLimited,i,UploadUserQStr,DownUserQStr,UserInfo BoardUserLimited = Split(Dvbbs.Board_Setting(55),"|") '下载扣除负分修改 Dim Sql,UserSession Sql="Select UserID,UserName,UserPassword,UserEmail,UserPost,UserTopic,userWealth,userEP,userCP,UserPower,UserMoney,UserTicket" Sql=Sql & " From [Dv_User] Where UserID = " & Dvbbs.UserID Set Rs = Dvbbs.Execute(Sql) If Rs.EOF Then Dvbbs.UserID = 0:Dvbbs.LetGuestSession() Else Set UserSession = Dvbbs.RecordsetToxml(rs,"userinfo","xml") End If Rs.close() Set Rs=Nothing '下载扣除负分修改 Set UserInfo=UserSession.documentElement.selectSingleNode("userinfo") If Ubound(BoardUserLimited)=12 Then For i=0 To 12 BoardUserLimited(i)=Dvbbs.CheckNumeric(BoardUserLimited(i)) Next '文章 If BoardUserLimited(0)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户发贴最少为 "&BoardUserLimited(0)&" 才能下载&action=OtherErr" If Clng(UserInfo.getAttribute("userpost"))<=Clng(BoardUserLimited(0)) Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户发贴最少为 "&BoardUserLimited(0)&" 才能下载&action=OtherErr" End If '积分 If BoardUserLimited(1)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户积分最少为 "&BoardUserLimited(1)&" 才能下载&action=OtherErr" If Clng(UserInfo.getAttribute("userep"))<=Clng(BoardUserLimited(1)) Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户积分最少为 "&BoardUserLimited(1)&" 才能下载&action=OtherErr" End If '金钱 If BoardUserLimited(2)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户金钱最少为 "&BoardUserLimited(2)&" 才能下载&action=OtherErr" If Clng(UserInfo.getAttribute("userwealth"))<=Clng(BoardUserLimited(2)) Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户金钱最少为 "&BoardUserLimited(2)&" 才能下载&action=OtherErr" End If '魅力 If BoardUserLimited(3)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户魅力最少为 "&BoardUserLimited(3)&" 才能下载&action=OtherErr" If Clng(UserInfo.getAttribute("usercp"))<=Clng(BoardUserLimited(3)) Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户魅力最少为 "&BoardUserLimited(3)&" 才能下载&action=OtherErr" End If '威望 If BoardUserLimited(4)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户威望最少为 "&BoardUserLimited(4)&" 才能下载&action=OtherErr" If Clng(UserInfo.getAttribute("userpower"))<=Clng(BoardUserLimited(4)) Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户威望最少为 "&BoardUserLimited(4)&" 才能下载&action=OtherErr" End If '精华 If BoardUserLimited(5)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户精华最少为 "&BoardUserLimited(5)&" 才能下载&action=OtherErr" If Clng(UserInfo.getAttribute("userisbest"))<=Clng(BoardUserLimited(5)) Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户精华最少为 "&BoardUserLimited(5)&" 才能下载&action=OtherErr" End If '删贴 If BoardUserLimited(6)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户被删贴少于 "&BoardUserLimited(6)&" 才能下载&action=OtherErr" If Clng(UserInfo.getAttribute("userdel"))>=Clng(BoardUserLimited(6)) Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户被删贴少于 "&BoardUserLimited(6)&" 才能下载&action=OtherErr" End If '注册时间 If BoardUserLimited(7)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户注册时间大于 "&BoardUserLimited(7)&" 分钟才能下载&action=OtherErr" If DateDiff("s",UserInfo.getAttribute("joindate"),Now)本版面设置了用户注册时间大于 "&BoardUserLimited(7)&" 分钟才能下载&action=OtherErr" End If Dim DownUserMoney,DownUserWealth,DownUserEp If Dvbbs.UserID >0 Then DownUserMoney = Dvbbs.CheckNumeric(UserInfo.getAttribute("usermoney")) DownUserWealth = Dvbbs.CheckNumeric(UserInfo.getAttribute("userwealth")) DownUserEp = Dvbbs.CheckNumeric(UserInfo.getAttribute("userep")) Else DownUserMoney = 0 DownUserWealth = 0 DownUserEp = 0 End If If BoardUserLimited(9)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户下载扣除金币 "&BoardUserLimited(9)&" 个,你未登陆,不能下载。&action=OtherErr" If DownUserMoney >= Clng(BoardUserLimited(9)) Then DownUserQStr = DownUserQStr & ",UserMoney=UserMoney-"&BoardUserLimited(9) UploadUserQStr = UploadUserQStr & ",UserMoney=UserMoney+"&(BoardUserLimited(9)*BoardUserLimited(12))\100 Else Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户下载扣除金币 "&BoardUserLimited(9)&" 个,你金币数不够,不能下载。&action=OtherErr" End If End If If BoardUserLimited(10)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户下载扣除金钱 "&BoardUserLimited(10)&" 个,你未登陆,不能下载。&action=OtherErr" If DownUserWealth >= Clng(BoardUserLimited(10)) Then DownUserQStr = DownUserQStr & ",UserWealth=UserWealth-"&BoardUserLimited(10) UploadUserQStr = UploadUserQStr & ",UserWealth=UserWealth+"&(BoardUserLimited(10)*BoardUserLimited(12))\100 Else Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户下载扣除金钱 "&BoardUserLimited(10)&" 个,你金钱数不够,不能下载。&action=OtherErr" End If End If If BoardUserLimited(11)>0 Then If Dvbbs.UserID = 0 Then Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户下载扣除积分 "&BoardUserLimited(11)&" 个,你未登陆,不能下载。&action=OtherErr" If DownUserEp >= Clng(BoardUserLimited(11)) Then DownUserQStr = DownUserQStr & ",UserEp=UserEp-"&BoardUserLimited(11) UploadUserQStr = UploadUserQStr & ",UserEp=UserEp+"&(BoardUserLimited(11)*BoardUserLimited(12))\100 Else Response.redirect "showerr.asp?ErrCodes=
  • 本版面设置了用户下载扣除积分 "&BoardUserLimited(11)&" 个,你积分不够,不能下载。&action=OtherErr" End If End If End If If Dvbbs.Forum_Setting(76)="" Or Dvbbs.Forum_Setting(76)="0" Then Dvbbs.Forum_Setting(76)="UploadFile/" If right(Dvbbs.Forum_Setting(76),1)<>"/" Then Dvbbs.Forum_Setting(76)=Dvbbs.Forum_Setting(76)&"/" Dim uploadpath,filename uploadpath=Dvbbs.Forum_Setting(76) Set Rs=Dvbbs.Execute("Select * From dv_upfile Where F_id="&downid) If Rs.Eof And Rs.Bof Then Dvbbs.AddErrCode(32) ElseIf Dvbbs.BoardID <> Int(Rs("F_BoardID")) Then Dvbbs.AddErrCode(32) Rem 判断版面来源 Else If DownUserQStr <> "" Then UserInfo.setAttribute "usermoney", (DownUserMoney - BoardUserLimited(9)) UserInfo.setAttribute "userwealth", (DownUserWealth - BoardUserLimited(10)) UserInfo.setAttribute "userep", (DownUserEp - BoardUserLimited(11)) Dvbbs.Execute("Update Dv_User Set "&Right(DownUserQStr,Len(DownUserQStr)-1)&" Where UserID="&Dvbbs.UserID) End If If DownUserQStr <> "" Then Dvbbs.Execute("Update Dv_User Set "&Right(UploadUserQStr,Len(UploadUserQStr)-1)&" Where UserID="&Rs("F_UserID")&"") Dvbbs.Execute("Update dv_upfile Set F_DownNum=F_DownNum+1 Where F_ID="&DownID) If Dvbbs.Forum_Setting(75)="0" Then If Rs("F_OldName") = "" Or IsNull(Rs("F_OldName")) Then Response.Redirect uploadpath&rs("F_filename") Else downloadFile Server.MapPath(uploadpath&rs("F_filename")),Rs("F_OldName") End If Else filename=Replace(rs("F_filename"),"..","")&"" If Request.ServerVariables("HTTP_REFERER")="" Or InStr(Request.ServerVariables("HTTP_REFERER"),Request.ServerVariables("SERVER_NAME"))=0 Or filename="" Then Response.Redirect "index.asp" Else downloadFile Server.MapPath(Dvbbs.Forum_Setting(76)&filename),Rs("F_OldName") End If End If End If Rs.close Set Rs=Nothing Dvbbs.ShowErr() Dvbbs.PageEnd() Sub downloadFile(strFile,FileOldName) On error resume next Server.ScriptTimeOut=999999 Dim S,fso,f,intFilelength,strFilename,DownFileName strFilename = strFile Response.Clear Set s = Dvbbs.iCreateObject("ADODB.Stream") s.Open s.Type = 1 Set fso = Dvbbs.iCreateObject("Scripting.FileSystemObject") If Not fso.FileExists(strFilename) Then Response.Write("

    错误:


    系统找不到指定文件") Exit Sub End If Set f = fso.GetFile(strFilename) intFilelength = f.size s.LoadFromFile(strFilename) If err Then Response.Write("

    错误:

    " & err.Description & "

    ") Response.End End If Set fso=Nothing Dim Data Data=s.Read s.Close Set s=Nothing If FileOldName="" Or IsNull(FileOldName) Then DownFileName=f.name Else DownFileName=FileOldName If Response.IsClientConnected Then Response.AddHeader "Content-Disposition", "attachment; filename=" & DownFileName Response.AddHeader "Content-Length", intFilelength Response.CharSet = "UTF-8" Response.ContentType = "application/octet-stream" Response.BinaryWrite Data Response.Flush End If End Sub %>