package com.csi.controller.product; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileItemFactory; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.json.simple.JSONObject; 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 java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.*; @WebServlet("/UploadPicController") public class UploadPicController extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //文件保存目录路径 String savePath = req.getServletContext().getRealPath("/") + "attached/"; //文件保存目录URL String saveUrl = req.getContextPath() + "/attached/"; //定义允许上传的文件扩展名 HashMap<String, String> extMap = new HashMap<String, String>(); extMap.put("image", "gif,jpg,jpeg,png,bmp"); extMap.put("flash", "swf,flv"); extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"); extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2"); //最大文件大小 long maxSize = 1000000; resp.setContentType("text/html; charset=UTF-8"); PrintWriter out = resp.getWriter() ; if(!ServletFileUpload.isMultipartContent(req)){ out.println(getError("请选择文件。")); return; } //检查目录 File uploadDir = new File(savePath); if(!uploadDir.exists()) { uploadDir.mkdirs() ; } if(!uploadDir.isDirectory()){ out.println(getError("上传目录不存在。")); return; } //检查目录写权限 if(!uploadDir.canWrite()){ out.println(getError("上传目录没有写权限。")); return; } String dirName = req.getParameter("dir"); if (dirName == null) { dirName = "image"; } if(!extMap.containsKey(dirName)){ out.println(getError("目录名不正确。")); return; } //创建文件夹 savePath += dirName + "/"; saveUrl += dirName + "/"; File saveDirFile = new File(savePath); if (!saveDirFile.exists()) { saveDirFile.mkdirs(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String ymd = sdf.format(new Date()); savePath += ymd + "/"; saveUrl += ymd + "/"; File dirFile = new File(savePath); if (!dirFile.exists()) { dirFile.mkdirs(); } FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); List items = null; try { items = upload.parseRequest(req); } catch (FileUploadException e) { e.printStackTrace(); } Iterator itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); String fileName = item.getName(); long fileSize = item.getSize(); if (!item.isFormField()) { //检查文件大小 if(item.getSize() > maxSize){ out.println(getError("上传文件大小超过限制。")); return; } //检查扩展名 String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){ out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。")); return; } SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt; try{ File uploadedFile = new File(savePath, newFileName); item.write(uploadedFile); }catch(Exception e){ out.println(getError("上传文件失败。")); return; } JSONObject obj = new JSONObject(); obj.put("error", 0); obj.put("url", saveUrl + newFileName); out.println(obj.toJSONString()); } } } private String getError(String message) { JSONObject obj = new JSONObject(); obj.put("error", 1); obj.put("message", message); return obj.toJSONString(); } } --------
@RequestMapping("/addmovie.do") public void addMovie(HttpServletRequest request,HttpServletResponse response) throws Exception { response.setContentType("application/json;charset=utf-8") ; Movie movie = new Movie(); MovieService movieService = new MovieServiceImpl(); //创建一个解析器工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //文件上传解析器 ServletFileUpload upload = new ServletFileUpload(factory); //解析请求,将表单中每个输入项封装成一个FileItem对象 List<FileItem> fileItems = upload.parseRequest(request); //所有表单非文件类型的集合 Map<String,Object> param = new HashMap<String,Object>(); // 迭代表单数据 for (FileItem fileItem : fileItems) { //判断输入的类型是 普通输入项 还是文件 if (!fileItem.isFormField()) { //上传的是文件,获得文件上传字段中的文件名 //注意IE或FireFox中获取的文件名是不一样的,IE中是绝对路径,FireFox中只是文件名 String fileName = fileItem.getName(); System.out.println(fileName); //Substring是字符串截取,返回值是一个截取后的字符串 //lastIndexOf(".")是从右向左查,获取.之后的字符串 String ext = fileName.substring(fileName.lastIndexOf(".")); //UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法, UUID的唯一缺陷在于生成的结果串会比较长 String name = UUID.randomUUID()+ext; //将FileItem对象中保存的主体内容保存到某个指定的文件中 String path = request.getSession().getServletContext().getRealPath("/file")+ "/upload/movies/" + name; File file = new File(path); String filePath = "/file/upload/movies/" + name; movie.setMovie_picture(filePath); movie.setMovie_state(1); fileItem.write(file); }else{ param.put(fileItem.getFieldName(), fileItem.getString("utf-8"));//如果你页面编码是utf-8的 } } String moviecnname = param.get("movie_cn_name").toString(); System.out.println(moviecnname); String movie_cn_name = null; if (!"".equals(moviecnname)){ movie_cn_name = moviecnname; } String moviefgname = param.get("movie_fg_name").toString(); String movie_fg_name = null; if (!"".equals(moviefgname)){ movie_fg_name = moviefgname; } String movieactor = param.get("movie_actor").toString(); String movie_actor = null; if (!"".equals(movieactor)){ movie_actor = movieactor; } String moviedirector = param.get("movie_director").toString(); String movie_director = null; if (!"".equals(moviedirector)){ movie_director = moviedirector; } String moviedetail = param.get("movie_detail").toString(); String movie_detail = null; if (!"".equals(moviedetail)){ movie_detail = moviedetail; } String movieduration = param.get("movie_duration").toString(); String movie_duration = null; if (!"".equals(movieduration)){ movie_duration = movieduration; } String movietype = param.get("movie_type").toString(); String movie_type = null; if (!"".equals(movietype)){ movie_type = movietype; } String moviecountry = param.get("movie_country").toString(); String movie_country = null; if (!"".equals(moviecountry)){ movie_country = moviecountry; } String moviereleaseDate = param.get("movie_releaseDate").toString(); Date movie_releaseDate = null; if(!"".equals(moviereleaseDate)){ movie_releaseDate = new SimpleDateFormat("yyyy-MM-dd").parse(moviereleaseDate); } movie.setMovie_cn_name(movie_cn_name); movie.setMovie_fg_name(movie_fg_name); movie.setMovie_actor(movie_actor); movie.setMovie_director(movie_director); movie.setMovie_detail(movie_detail); System.out.println(movie_detail); movie.setMovie_duration(movie_duration); movie.setMovie_type(movie_type); movie.setReleaseDate(movie_releaseDate); movie.setMovie_country(movie_country); System.out.println(movie_releaseDate); System.out.println(movie_actor); System.out.println(111111); System.out.println(movie); response.setContentType("text/json; charset=utf-8"); // 设置response的编码及格式 PrintWriter out = response.getWriter(); Map<String,Object> map = new HashMap<>(); Integer rs = movieService.addMovie(movie); if(rs > 0) { map.put("code", 0); map.put("msg", "添加成功~"); }else { map.put("code", 200); map.put("msg", "添加失败~"); } String resJSON = JSON.toJSONString(map); out.print(resJSON); // 输出 }