/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package cn.toher.DataImport; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; 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 net.coobird.thumbnailator.Thumbnails; 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; import org.apache.commons.lang.StringUtils; /** * * */ @WebServlet(name = "FileUpLoad", urlPatterns = {"/FileUpLoad"}) public class FileUpLoad extends HttpServlet { private final String uploadLoation = "uploadfile"; //保存的文件夹名称 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("utf-8"); //设置编码 //获取用户UserNo作用于文件夹创建 String UserNo = ""; if (StringUtils.isBlank(UserNo)) { UserNo = request.getParameter("userNo"); } //设置项目访问路径 String ContextPath = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + ContextPath + "/"; PrintWriter Printout = response.getWriter(); //获得磁盘文件条目工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //获取文件需要上传到的路径 String path = request.getSession().getServletContext().getRealPath("/") + uploadLoation + File.separator + UserNo; File pathFile = new File(path); //文件以及路径是否存在 if (!pathFile.exists()) { //文件夹 pathFile.mkdirs(); } //创建一个文件上传处理器 factory.setRepository(new File(path)); //设置 缓存的大小,当上传文件的容量超过该缓存时,直接放到 暂时存储室 factory.setSizeThreshold(1024 * 1024); //高水平的API文件上传处理 ServletFileUpload upload = new ServletFileUpload(factory); try { //可以上传多个文件,解析表单中的每一个表单项,封装成FileItem对象,以List方式返回,表单("enctype="multipart/form-data"") List<FileItem> list = (List<FileItem>) upload.parseRequest(request); String newFileName = ""; for (FileItem item : list) { //获取表单的属性名字 String name = item.getFieldName(); //如果获取的 表单信息是普通的 文本 信息 if (item.isFormField()) { //获取用户具体输入的字符串 ,名字起得挺好,因为表单提交过来的是 字符串类型的 String value = item.getString(); request.setAttribute(name, value); } else { //获取路径名 String value = item.getName(); String fileExt = value.substring(value.lastIndexOf(".") + 1); //设置新的文件名,这里我们采用日期格式,当然我们还可以使用UUID SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); newFileName = df.format(new Date()) + (int) (Math.random() * 1000) + "." + fileExt; String uploadFolder = path + File.separator + newFileName; File file = new File(uploadFolder); item.write(file); } /* 上传成功后,进行数据返回!*/ } Printout.println("{"code":"success","msg":"/"+ uploadLoation +"/"+UserNo+"/"+ newFileName + ""}"); } catch (Exception e) { e.printStackTrace(); Printout.println("{"code":"error","msg":""}"); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</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 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> }