package com.jflyfox.component.controller; import com.jflyfox.component.controller.base.BaseUmeditor; import com.jflyfox.component.controller.base.Uploader; import com.jflyfox.jfinal.component.annotation.ControllerBind; import com.jflyfox.modules.admin.error.TbError; import com.jflyfox.system.user.SysUser; import com.jflyfox.util.Config; import javax.servlet.http.HttpServletRequest; import java.util.*; @ControllerBind(controllerKey = "umeditor") public class Umeditor extends BaseUmeditor { // 文件大小常量, 单位kb private static final int MAX_SIZE = Config.getToInt("person.MaxSize"); // 文件类型限制 private static final String[] fileType = { ".gif", ".png", ".jpg", ".jpeg", ".bmp" }; // 文件上传路径umeditor下 private static final String DIR = Config.getStr("person.SavePath"); private static final Map map = new HashMap(); /** * 图片上传 * */ public void imageup() { String[] fileType = { ".gif", ".png", ".jpg", ".jpeg", ".bmp" }; List savePath = Arrays.asList(Config.getStr("savePath").split(",")); // 获取存储目录结构 if (getPara("fetch") != null) { // 构造json数据 Iterator iterator = savePath.iterator(); String dirs = "["; while (iterator.hasNext()) { dirs += "'" + iterator.next() + "'"; if (iterator.hasNext()) { dirs += ","; } } dirs += "]"; renderJavascript("updateSavePath( " + dirs + " );"); return; } Uploader up = new Uploader(getRequest()); // 获取前端提交的path路径 String dir = getPara("dir"); // 普通请求中拿不到参数, 则从上传表单中拿 if (dir == null) { dir = up.getParameter("dir"); } if (dir == null || "".equals(dir)) { // 赋予默认值 dir = savePath.get(0); // 安全验证 } else if (!savePath.contains(dir)) { renderText("{'state':'\\u975e\\u6cd5\\u4e0a\\u4f20\\u76ee\\u5f55'}"); return; } try { up.setSavePath(dir); up.setAllowFiles(fileType); up.setMaxSize(500 * 1024); // 单位KB up.upload(); } catch (Exception e) { e.printStackTrace(); } String result = "{\"name\":\"" + up.getFileName() + "\", \"originalName\": \"" + up.getOriginalName() + "\", \"size\": \"" + up.getSize() + "\", \"state\": \"" + up.getState() + "\", \"type\": \"" + up.getType() + "\", \"url\": \"" + up.getUrl() + "\"}"; result = result.replaceAll("\\\\", "\\\\"); renderHtml(result); } /** * 图片上传 * * @see 博文上传,必须严格限制 * */ public void personimageup() { // 文件限制处理 SysUser user = (SysUser) getSessionUser(); PersonFileLimit fileLimit = map.get(user.getUserid()); if (fileLimit == null) { fileLimit = new PersonFileLimit(); map.put(user.getUserid(), fileLimit); } fileLimit.add(); String result = ""; if (!fileLimit.isLegal()) { if (!fileLimit.isInsert()) { TbError error = new TbError(); error.setUserid(user.getUserid()); error.setType(TbError.FILE_UPLOAD_MORE); error.setIp(getIpAddr(getRequest())); error.setContent("上传数量:" // + fileLimit.getNowHour() + "(" + fileLimit.getNowHourCount().get() + ")-" // + fileLimit.getNowDay() + "(" + fileLimit.getNowDayCount().get() + ")"); error.put("create_id", getSessionUser().getUserid()); error.put("create_time", getNow()); error.save(); fileLimit.setInsert(true); } String state = "上传文件过快或者过多,如有问题请联系管理员~!~"; result = "{\"state\": \"" + state + "\"}"; } else { Uploader up = new Uploader(getRequest()); // 获取前端提交的path路径 try { // 知道哪个用户传的便于垃圾数据清理 up.setPreFileName(user.getUserid() + "_"); up.setSavePath(DIR); up.setAllowFiles(fileType); up.setMaxSize(MAX_SIZE); // 单位KB up.upload(); } catch (Exception e) { e.printStackTrace(); } result = "{\"name\":\"" + up.getFileName() + "\", \"originalName\": \"" + up.getOriginalName() + "\", \"size\": \"" + up.getSize() + "\", \"state\": \"" + up.getState() + "\", \"type\": \"" + up.getType() + "\", \"url\": \"" + up.getUrl() + "\"}"; result = result.replaceAll("\\\\", "\\\\"); } renderHtml(result); } public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } }