%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
%><%@page import="webber.core.*,
java.io.*,
webber.vsb.storage.util.StorageUtil,
webber.vsb.storage.util.StorageFile,
webber.wbst.com.download.*,
java.util.regex.Pattern,
java.util.regex.Matcher"
%><%
response.setHeader("Cache-Control", "no-store"); // HTTP 1.1
response.setHeader("Pragma", "no-cache"); // HTTP 1.0
response.setDateHeader("Expires", 0);
//判斷refer, 禁止盜鏈
String useragent = request.getHeader("User-Agent");
String referer = request.getHeader("referer");
boolean isShowCode = false;//是否要輸入驗證碼
boolean isweixin = false;//是否微信
boolean isandroids = false;//是否androids 初始值是true
String androidsReg = "\\bandroids|Nexus\\b";
Pattern androidsPat = Pattern.compile(androidsReg, Pattern.CASE_INSENSITIVE); // 匹配
Matcher matcherandroids = androidsPat.matcher(useragent);
if(matcherandroids.find()){
isandroids = true;
} String message = "";
if(useragent.indexOf("MicroMessenger") != -1 || useragent.indexOf("micromessenger") != -1){
isweixin = true;
}
//獲取session 看是不是已經輸入過驗證碼,如果沒有輸入過,再判斷refer
boolean needref = session.getAttribute("filedownload_action")==null?true:false;
if(needref){//沒有session的 情況下 需要判斷 ref
//判斷用戶動作,是第一次打開還是提交
String codevalsue=StringUtil.getParameter(request,"codevalsue","");
if(!"".equals(codevalsue))//提交過來的
{
String rand = "";
if(session.getAttribute("filedownloadrand") != null){
rand = session.getAttribute("filedownloadrand").toString();
}
if(codevalsue.equals(rand))//驗證碼正確
{
session.setAttribute("filedownload_action","download");
}else{
message = "驗證碼錯誤,請重新輸入。";
isShowCode = true;
}
}else{
if(referer == null || referer.equals(""))
{
if(useragent != null && useragent.indexOf("VSBEmulator") != -1)
{
out.println("\r\n模擬器不支持下載!");
return;
}else{
isShowCode = true;
}
}else{
//LSS下request.getScheme()不能準確或取
if(!referer.startsWith("http://" + request.getServerName())&&!referer.startsWith("https://" + request.getServerName()))
{
isShowCode = true;
}
}
}
} if(!isShowCode){
//獲取下載文件鏈接
DownLoadNewsAttach attach = null;
try
{
attach=new DownLoadNewsAttach(request);
}
catch(Exception e)
{
out.print("\r\n
" + StringUtil.escapeHTMLTags(e.getMessage()) + "
");
return;
}
String url=attach.getUrl();
//更新瀏覽次數
if(request.getHeader("Range") == null)
attach.updateBrowerTimes();
String filename=attach.getFilename();
//如果是雲文件庫
if(StorageUtil.isVsl(url))
{
StorageFile sf=new StorageFile(StorageUtil.vsl2Mark(url));
String s=sf.getDownloadURL(request);
pageContext.forward(WebberFileSystem.getWebberServletUrl(request,s+"&filename="+StringUtil.encodeURL(StringUtil.encodeBase64(filename))));
return;
}
else
{
String downurl = attach.getRealUrl();
if(!downflowctrl.downStart(request, response, downurl))
return;
try
{
String filetype= "application/octet-stream";// 告訴客戶端為文件流
response.reset();
response.setContentType(filetype);
response.setHeader("Content-disposition", "attachment; filename=" + StringUtil.encodeDownloadFileName(request, filename.replaceAll(" ", "vsb_space_vsb")).replaceAll("vsb_space_vsb", "%20"));
//直接轉向此文件,交給tomcat自己處理,這樣可以支持斷點續傳 boolean con = downurl.contains("?");
request.getRequestDispatcher(downurl+(con ? "&":"?")+"r="+StringUtil.getUUID()).forward(request, response);
}
catch(Exception e)
{
//System.out.println(e.getMessage());
}
finally
{
downflowctrl.downEnd(request, response, downurl);
}
}
}else{
response.setContentType("text/html; charset=UTF-8");
String urltype = StringUtil.getParameter(request,"urltype","");
String owner = StringUtil.getParameter(request,"owner","");
String wbfileid = StringUtil.getParameter(request,"wbfileid","");
%>
附件下載
摩鑫娱乐
摩鑫娱乐網站xml地圖
<% if(isweixin && isandroids){
%>
如果下載沒有開始,請點擊右上角“...” 選擇“在瀏覽器打開”。
<%}else{%>
<%}%>
摩鑫娱乐
<%}%>