jsp文件上传

首先需要将上传所需要的类库引入web工程中 

然后需要了解上传表单enctype的属性,该属性用于设置表单递交数据的编码方式 他有三个值:

1.aplication/x-www-form-urlencoded:这是默认值,只要用于处理少量文本数据的传递,在向服务器发送大量文本,包括非ASCII字符的文本或二进制数据时这种编码方式的效率很低;

2.multipart/form-data:上传二进制数据,只有使用了multipart/form-data,才能完整的传递文件数据进行上传操作;

3.text/plain:主要用户向服务器传递大量的文本数据,比较适用于电子邮件的应用;

 

主要servlet代码:

 

// 获得application上下文路径 Http 以及设置编码 ServletContext application = getServletContext(); response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); request.setCharacterEncoding("utf-8"); int counter = 0;//共上传多少个文件 try { boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { response.sendRedirect("error.jsp"); } // 创建文件上传工厂实例 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(1024);// 文件缓存大小 // 文件缓存地址 factory.setRepository(new File(application.getRealPath("/tmp"))); // 创建文件上传对象 ServletFileUpload upload = new ServletFileUpload(factory); // 上传文件的最大值 10M upload.setSizeMax(1024 * 1024 * 10); // 获得页面上传的文件单项 并放进List里面 List fileItems = upload.parseRequest(request); Iterator iterator = fileItems.iterator(); String uploadPath = application.getRealPath("/upload"); System.out.println("上传文件存于:" + uploadPath); int location = 0; // 遍历所有上传表单项 while (iterator.hasNext()) { FileItem files = (FileItem) iterator.next(); String uploadFileName = files.getName(); if (uploadFileName != null) { location = uploadFileName.lastIndexOf("//"); } //如果获得的文件不是普通域并且名字不为空和长度不为零 if ((!files.isFormField()) && (uploadFileName != null) && uploadFileName.length() > 0) { //获得得到的文件的文件名 String fileName = uploadFileName.substring(location + 1); // 将上传的文件保存到给定的路劲下 File savedFile = new File(uploadPath, fileName); files.write(savedFile); /*out.print("<br>恭喜您!成功上传文件。"); out.print("<br>文件名:" + uploadFileName); out.print("<br>文件大小:" + files.getSize()); out.print("<br>文件类型:" + files.getContentType());*/ counter++; request.getRequestDispatcher("seccess.jsp").forward(request, response); } } } catch (SizeLimitExceededException e) { out.print("上传的文件过大,上传失败."); } catch (Exception e) { out.print("文件上传时发生异常:" + e); } finally { out.print("<br>您共成功上传" + counter + "个文件"); } 

 

 

 

通过getContentType()得到所上传文件类型,然后可以在类中对所上传的文件类型进行限制,如:

判断上传的类型是否于限制的类型相同,如果相同,聚允许上传,反之这不可以上传;同时给出相应的提示;

 

 

你可能感兴趣的:(exception,jsp,String,servlet,application,iterator)