用Commons-FileUpload组件实现文件上传

在1.jsp页面选取文件   传递给recives页面进行解析并将文件进行上传操作

1.jsp

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11   </head>
12   
13   <body>
14      <form action="<%=path %>/Filedemo/recives.jsp" enctype="multipart/form-data" method="post">
15          <p>姓名<input type="text" name="user"></p>
16      
17          <p>选择图片:<input type="file" name="nfile"/></p>
18          <p><input type="submit" value="提交"/></p>
19          
20      </form>
21   </body>
22 </html>

recives.jsp

<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.FileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%    request.setCharacterEncoding("utf-8");
    String uploadFileName="";        //上传的文件名
    String filedName="";        //表单字段元素的name属性值
    boolean isMultipart= ServletFileUpload.isMultipartContent(request);        //请求信息中的内容是否是multipart类型
    //上传文件的存储路径(服务器文件系统上的绝对文件路径)
    String uploadFilepath= request.getSession().getServletContext().getRealPath("/WEB-INF/upload/");
    if(isMultipart){
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload= new ServletFileUpload(factory);        //解析器
        try{        //解析form表单中所有文件
            List<FileItem> items= upload.parseRequest(request);
            Iterator<FileItem> iter= items.iterator();        //每个iter代表每一个表单元素
            while(iter.hasNext()){        //依次处理每个文件
                FileItem item= iter.next();      //每一个iter代表每一个表单元素
                if(item.isFormField()){        //普通表单字段
                
                     filedName= item.getFieldName();        //表单字段的name属性
                     if(filedName.equals("user")){
                         //输出表单阻断的值
                         out.print(item.getString("utf-8")+"上传了文件。<br/>");
                     }
                     
                }else{        //文件表单字段
                    String fileName=item.getName();      //文件名字
                    if(fileName!=null && !fileName.equals("")){
                        File fullFile=new File(item.getName()); 
                        File saveFile = new File(uploadFilepath,fullFile.getName());
                        item.write(saveFile);
                        uploadFileName=fullFile.getName();        //上传文件名
                        out.print("上传成功后的文件名是:"+uploadFileName+"<br/>上传后文件地址是:"+saveFile);
                    }
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
 %>

相关代码文件:链接:http://pan.baidu.com/s/1cl0T0y 密码:0kj3