抽取FileUtil工具类

xiaoxiao2021-02-28  42

public class FileUtil { public static void upload(HttpServletRequest request) { //解析和检查请求:请求方式是否是POST,请求编码是否是multipart/form-data boolean isMultipart =ServletFileUpload.isMultipartContent(request); if(!isMultipart) { return; //结束,不运行后面的 } try { //1.创建FileItemFactory对象 //FileItemFactory是用来创建FileItem对象的 //FileItem对象:form表单中的表单控件的封装 DiskFileItemFactory factory=new DiskFileItemFactory(); factory.setSizeThreshold(20*2014); //20kb //2.创建文件上传处理器 ServletFileUpload upload=new ServletFileUpload(factory); //解决上传表单乱码问题 upload.setHeaderEncoding("utf-8"); //3.解析请求 List<FileItem> items=upload.parseRequest(request); //4.迭代出每一个FileItem for(FileItem item:items) { String fieldName=item.getFieldName();//获取表单控件的name属性值(参数名) if(item.isFormField()) { //普通的表单控件 String value=item.getString("utf-8"); System.out.println(fieldName+"-"+value); }else { //表单上传控件 //---------------------------------------------- String mimeType=request.getSession().getServletContext().getMimeType(item.getName()); //当前上传文件的类型不在图片允许的格式之内 if(!mimeType.contains("image")) { throw new LogicException("请上传图片文件"); } System.out.println(fieldName+"-"+item.getName()); String fileName=UUID.randomUUID().toString()+"."+ FilenameUtils.getExtension(item.getName()); String dir="C:\\Users\\陈曼\\eclipse-workspace3\\product-crud\\WebContent\\upload"; item.write(new File(dir,fileName));//把二进制数据写到哪一个文件中 } } }catch(LogicException e) { throw e; //继续抛出异常给调用者 } catch(Exception e){ e.printStackTrace(); } } }

Util类里用异常来和Servlet传递信息

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try{ FileUtil.upload(req); }catch(LogicException e) { String error=e.getMessage(); //获取异常信息 req.setAttribute("errorMassage",error); req.getRequestDispatcher("upload.jsp").forward(req, resp); } } public class LogicException extends RuntimeException{ private static final long serialVersionUID = 1L; public LogicException(String message, Throwable cause) { super(message, cause); } public LogicException(String message) { super(message); } }
转载请注明原文地址: https://www.6miu.com/read-2628014.html

最新回复(0)