文件写入硬盘
获取表单数据之后,判断如果字段不是普通字段(即文件字段),则对文件进行保存。
示例代码:
1 public void doGet(HttpServletRequest request, HttpServletResponse response) 2 throws ServletException, IOException { 3 //设置返回的字符编码 4 response.setCharacterEncoding("UTF-8"); 5 //设置返回的内容类型 6 response.setContentType("text/html;charset=UTF-8"); 7 //创建接收文件的工厂类 8 DiskFileItemFactory factory = new DiskFileItemFactory(); 9 //创建文件解析对象 10 ServletFileUpload sfu = new ServletFileUpload(factory); 11 try { 12 //解析request获得表单中的每一文件项(包含普通文本域) 13 List<FileItem> fiList = sfu.parseRequest(request); 14 //遍历每一个文本项 15 for(FileItem fi : fiList){ 16 //获得原始文件名 17 String originalFilename = fi.getName(); 18 //获得字段名 19 String field = fi.getFieldName(); 20 //是否是普通字段 21 //如果true,代表普通字段(a simple form field) 22 //如果false,代表文件字段 23 boolean isFormField = fi.isFormField(); 24 //判断是否是文件字段 25 if(!isFormField){ 26 if(field != null && !"".equals(field) ){ 27 //设置要上传的目录 28 String uploadPath = request.getSession().getServletContext().getRealPath("/upload"); 29 //创建文件对象 30 File file = new File(uploadPath,originalFilename);//参数:文件目录,文件名 31 //把文件写入硬盘 32 fi.write(file); 33 //回写结果 34 response.getWriter().print("文件上传成功。"); 35 } 36 } 37 } 38 } catch (FileUploadException e) { 39 e.printStackTrace(); 40 } catch (Exception e) { 41 e.printStackTrace(); 42 } 43 }