package com.huahuan.manage.sthd; import com.huahuan.servletutil.ServletUtil; import com.huahuan.tools.Constants; import com.huahuan.tools.Util; import com.jplus.json.JSONArray; import com.jplus.json.JSONException; import com.jplus.json.JSONObject; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * * @author Administrator */ @WebServlet(name = "SthdPicManageAction", urlPatterns = "/manage/SthdPicManageAction.jsp") public class SthdPicManageAction extends HttpServlet { /** * 下面是模式关键字 可以自行删除和增加自定义模式,关键字一定要大写 默认模式为OTHER=0,所以OTHER不能删除 */ public final static int OTHER = 0;//其它 public final static int DELETE = 6;//删除记录 public final static int HDTPGL = 7;//删除记录 public final static int CREATENEWFOLDER = 8; public final static int UPLOAD = 9; public final static int TPXZLB = 10; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); execute(ServletUtil.setModel(request.getParameter("mode"), this), request, response); } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP * <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> /** * 获得某一个目录下的所有文件 */ private void getIMG(String path, HttpServletRequest request, HttpServletResponse response) { File file = new File(path); String relativePath = path.substring(path.indexOf("userfiles") + "userfiles".length() + 1).replace("\\", "/"); String[] files = file.list(); List<Folder> fileList = new ArrayList<Folder>(); if (files != null) { for (String name : files) { if (!name.contains(".svn")) {//避免文件中存在.svn的文件夹 Folder fl = new Folder(); fl.setName(name); fl.setFullPath(relativePath + "/" + name); fileList.add(fl); } } } String json = "{\"img\":" + new JSONArray(fileList) + "}"; ServletUtil.ajaxData(json, response); } /** * 显示文件树结构 */ private void showFolderTree(HttpServletRequest request, HttpServletResponse response) { String folder = request.getParameter("folder"); String root = ""; if (!folder.contains("WEB-INF")) {//防止他人恶心查看WEB-INF下面的文件 if (Util.isEmpty(folder) || !folder.contains("\\")) { root = request.getServletContext().getRealPath("/userfiles/" + folder); } else { root = folder; } File file = new File(root); List<Folder> folders = new ArrayList<Folder>(); if (file.list() != null) { for (String name : file.list()) { File temp = new File(root + "\\" + name); if (temp.isDirectory() && !name.equals(".svn")) { Folder fl = new Folder(); fl.setName(name); fl.setFullPath(temp.getPath()); folders.add(fl); } } if (folders.isEmpty()) {//执行文件显示 getIMG(root, request, response); return; } } JSONArray array = new JSONArray(folders); ServletUtil.ajaxData("{\"folder\":" + array + "}", response); } } /** * 新建文件夹 */ private void createNewFolder(HttpServletRequest request, HttpServletResponse response) { String folder = request.getParameter("folder"); if (!Util.isEmpty(folder) && !folder.contains("WEB-INF")) { String newFolder = request.getParameter("newFolder"); File file = new File(folder + "\\" + newFolder); boolean create = false; if (!file.exists()) { create = file.mkdirs(); } ServletUtil.ajaxData(create ? "1" : " 0", response, "html"); } } /** * 删除文件操作 */ private void delete(HttpServletRequest request, HttpServletResponse response) { String jsonImg = request.getParameter("jsonImg"); Integer delete = 0; JSONArray array = null; try { array = new JSONArray(jsonImg); } catch (JSONException ex) { delete = -1; Logger.getLogger(SthdPicManageAction.class.getName()).log(Level.SEVERE, null, ex); } JSONObject obj; File file; String path = "", basePath = request.getServletContext().getRealPath("/"); try { if (array != null) { for (int i = 0; i < array.length(); i++) { obj = array.getJSONObject(i); path = obj.getString("path"); path = basePath + path.substring(path.indexOf("userfiles")).replace("/", "\\"); file = new File(path); if (file.exists() && file.canWrite()) {//避免文件不存在或不能读写产生错误 boolean d = file.delete(); if (d) { delete++; } } } } } catch (JSONException ex) { Logger.getLogger(SthdPicManageAction.class.getName()).log(Level.SEVERE, null, ex); } ServletUtil.ajaxData(delete + "", response, "html"); } /** * 完成uploadify的上传 */ private void upload(HttpServletRequest request, HttpServletResponse response) { String folder = request.getParameter("folder"); String hdid = request.getParameter("hdid"); if (!Util.isEmpty(folder) && !folder.contains("WEB-INF")) { DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List<FileItem> fileList = null; try { fileList = upload.parseRequest(request); } catch (FileUploadException ex) { ex.printStackTrace(System.out); } String str = ""; if (!Util.isEmpty(hdid)) {//上传活动剪影模块图片 str = Util.uploadHdjy(fileList, folder, Integer.parseInt(hdid)); } else {//其他模块图片 str = Util.upload(fileList, folder); } ServletUtil.ajaxData((!str.equals("") || str != null) ? "1" : "0", response, "html"); } } /** * 得到图片选择列表 */ private void tpxzlb(HttpServletRequest request, HttpServletResponse response) { String dir = request.getParameter("dir"); String path = request.getServletContext().getRealPath("/userfiles" + dir); File file = new File(path); File[] files = file.listFiles(); LinkedList<String> list = new LinkedList<String>(); if (files != null) { for (int i = 0; i < files.length; i++) { String temp = "/" + files[i].getPath().substring(path.indexOf("userfiles") + "userfiles".length() + 1).replace("\\", "/"); list.add(temp); } } request.setAttribute("imglist", list); request.setAttribute("foldername", dir); try { request.getRequestDispatcher("/manage/browser.jsp").forward(request, response); } catch (ServletException ex) { Logger.getLogger(SthdPicManageAction.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(SthdPicManageAction.class.getName()).log(Level.SEVERE, null, ex); } } /** * 下面的模式和方法可以自行增删 */ public void execute(int event, HttpServletRequest request, HttpServletResponse response) { /** * 下面是相关模式下所做的动作* */ switch (event) { case DELETE: delete(request, response); break; case HDTPGL: showFolderTree(request, response); break; case CREATENEWFOLDER: createNewFolder(request, response); break; case UPLOAD: upload(request, response); break; case TPXZLB: tpxzlb(request, response); break; } } }