getfile.jsp
上传用户:jhtang88
上传日期:2014-01-27
资源大小:28528k
文件大小:3k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. <%@ page contentType="text/html;charset=gb2312"%><%@page import="cn.js.fan.util.*"%><%@page import="cn.js.fan.web.*"%><%@page import="com.redmoon.forum.*"%><%@page import="com.redmoon.forum.person.*"%><%@page import="com.redmoon.forum.plugin.*"%><%@page import="com.redmoon.forum.plugin.base.*"%><%@page import="java.util.*"%><%@page import="java.io.*"%><%@page import="java.net.*"%><jsp:useBean id="privilege" scope="page" class="com.redmoon.forum.Privilege"/><%
  2. if (!privilege.isUserLogin(request)) {
  3. if (!ForumDb.getInstance().canGuestSeeAttachment()) {
  4. response.sendRedirect("../info.jsp?op=login&info=" + StrUtil.UrlEncode(SkinUtil.LoadString(request, "info_please_login")));
  5. return;
  6. }
  7. }
  8. int msgId = ParamUtil.getInt(request, "msgId");
  9. MsgDb md = new MsgDb();
  10. md = md.getMsgDb(msgId);
  11. if (md==null || !md.isLoaded()) {
  12. out.print("<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>");
  13. out.println("Topic not found!");
  14. return;
  15. }
  16. if (!privilege.canUserDo(request, md.getboardcode(), "attach_download")) {
  17. response.sendRedirect("../info.jsp?info=" + StrUtil.UrlEncode(SkinUtil.LoadString(request, "pvg_invalid")));
  18. return;
  19. }
  20. int attachId = ParamUtil.getInt(request, "attachId");
  21. Attachment att = md.getAttachment(attachId);
  22. // 检查该附件下载是否需付费
  23. String groupCode = "";
  24. if (privilege.isUserLogin(request)) {
  25.    UserDb ud = new UserDb();
  26.    ud = ud.getUser(privilege.getUser(request));
  27.    groupCode = ud.getGroupCode();
  28.    // 取得用户所在组
  29.    if (groupCode.equals(""))
  30.     groupCode = UserGroupDb.EVERYONE;
  31. }
  32. else {
  33. groupCode = UserGroupDb.GUEST;
  34. }
  35. // 检查用户在此版块下载是否需付费
  36. UserGroupPrivDb ugpd = new UserGroupPrivDb();
  37. ugpd = ugpd.getUserGroupPrivDb(groupCode, md.getboardcode());
  38. String moneyCode = StrUtil.getNullStr(ugpd.getString("money_code"));
  39. if (!moneyCode.equals("")) {
  40. int sum = ugpd.getInt("money_sum");
  41. if (sum>0) {
  42. // 检查用户的金额是否足够
  43. ScoreMgr sm = new ScoreMgr();
  44. ScoreUnit su = sm.getScoreUnit(moneyCode);
  45. IPluginScore isc = su.getScore();
  46. if (isc != null) {
  47.    try {
  48.    isc.pay(privilege.getUser(request), isc.SELLER_SYSTEM, sum);
  49.    } catch (ResKeyException e) {
  50. out.print(SkinUtil.makeErrMsg(request, e.getMessage(request)));
  51. return;
  52.    }
  53. }
  54. }
  55. }
  56. // response.setContentType(MIMEMap.get(StrUtil.getFileExt(att.getDiskName())));
  57. // response.setContentType(MIMEMap.get(att.getExt()));
  58. // response.setHeader("Content-disposition","filename=" + StrUtil.GBToUnicode(att.getName()));
  59. // 以询问下载的方式打开,会覆盖父窗口
  60. response.setContentType("application/octet-stream");
  61. response.setHeader("Content-disposition","attachment; filename=" + StrUtil.GBToUnicode(att.getName()));
  62. BufferedInputStream bis = null;
  63. BufferedOutputStream bos = null;
  64. String filePath = application.getRealPath("/") + "forum/" + att.getVisualPath() + "/" + att.getDiskName();
  65. try {
  66. bis = new BufferedInputStream(new FileInputStream(filePath)); // att.getFullPath()));
  67. bos = new BufferedOutputStream(response.getOutputStream());
  68. byte[] buff = new byte[2048];
  69. int bytesRead;
  70. while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
  71. bos.write(buff,0,bytesRead);
  72. }
  73. } catch(final IOException e) {
  74. System.out.println( "IOException: " + e );
  75. } finally {
  76. if (bis != null)
  77. bis.close();
  78. if (bos != null)
  79. bos.close();
  80. }
  81. att.setDownloadCount(att.getDownloadCount() + 1);
  82. att.save();
  83. %>