使用commons-fileupload上传文件
2013-09-23 12:34
239 查看
public class FileUploadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //判断表单是否包含文件域(其实也就是判断表单是否包含enctype="multipart/form-data"属性) boolean isMultipart = ServletFileUpload.isMultipartContent(request); if(isMultipart){ //为上传的文件创建工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); //设置临时目录缓存文件大小 factory.setSizeThreshold(5*1024); // 获得容器(如:tomcat服务器)上下文环境 ServletContext servletContext = this.getServletConfig().getServletContext(); //临时目录存在点,由服务器决定,tomcat的临时目录是work File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir"); //设置工厂的临时目录 factory.setRepository(repository); // 创建文件上传处理程序 ServletFileUpload upload = new ServletFileUpload(factory); //允许上传的最大文件5mb upload.setSizeMax(5*1024*1024); //设置上传文件的最终存放路径,存放在部署项目的upload文件夹下 String uploadPath = servletContext.getRealPath("/")+File.separator+"upload"; try { // 解析上传文件的 表单请求参数(即表单的name属性) List<FileItem> items = upload.parseRequest(request); Iterator<FileItem> iter = items.iterator(); //遍历name属性(表单属性份为两种:1.普通name属性 2.文件域) String name = ""; while (iter.hasNext()) { //表单name属性对象的input元素 FileItem item = iter.next(); String filedName = item.getFieldName();//获取field的name属性 String filedValue = item.getString();//获取field的值(value) //判断是普通name,还是文件域 if (item.isFormField()) { //测试普通表单域 System.out.println(filedValue); //注意!!!!!!!!!!!!!!!!!!!!! //获取普通表单域中的value时,不能再像以往那样使用getParameter()方法了,因为普通表单域也在流中,我们应该 //通过FileItem的getString()获取普通表单域中的value。如果想通过name获取,应该使用下面的方式: if("name".equals(filedName)){ // name = item.getString(); name = item.getString("utf-8");//使用utf-8的编码方式获取,也可以采用平台默认的编码方式,如上 } } else { //表单中的文件域且文件域不为空 if(!"".equals(filedName.trim())){ //要上传的文件 File file = new File(uploadPath, item.getName()); //上传文件 item.write(file); //删除临时文件(也可以使用监听器自动删除临时文件) item.delete(); // 在web.xml中加入下面内容: // <listener> // <listener-class> // org.apache.commons.fileupload.servlet.FileCleanerCleanup // </listener-class> // </listener> } } } } catch (Exception e) { e.printStackTrace(); } } } }
相关文章推荐
- 使用commons-fileupload实现文件上传
- 使用commons-fileupload-1.2.1.jar等组件实现文件上传
- ---JavaWeb文件上传(commons-fileupload-x.x.x.jar的使用)
- 使用Springmvc和commons-fileupload-1.2.2.jar实现上传文件时,中文文件名乱码
- JSP+Servlet使用commons-fileupload上传文件连接被重置解决方案
- 使用commons-fileupload上传文件到服务器
- 使用Apache的commons-fileupload和commmons-io组件实现文件上传
- 使用commons-fileupload和commoms-ioJar上传文件到服务器
- 使用commons-fileupload的文件上传
- 使用Commons-fileupload组件实现文件上传
- 使用commons-fileupload实现文件上传
- 使用 Commons-fileupload 上传文件
- Jsp 使用commons-fileupload实现文件上传
- JSP使用commons-fileupload实现文件上传
- 使用commons-fileUpload组件上传文件
- 使用commons-fileupload组件上传下载文件
- 使用commons-fileupload包进行大文件上传注意事项
- Java使用Commons-FileUpload组件实现文件上传最佳方案
- 使用commons-fileupload组件上传下载文件
- 使用commons-fileupload实现单个和多个文件上传