在JSP环境中利用Commons-fileupload组件实现文件上传

来源:互联网 发布:重庆软件开发定制 编辑:程序博客网 时间:2024/05/05 13:29

一.在JSP环境中利用Commons-fileupload组件实现文件上传
   1.页面upload.jsp清单如下:

?
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<html> 
  <head> 
    <title>The FileUpload Demo</title> 
  </head> 
     
  <body> 
    <form action="UploadFile" method="post" enctype="multipart/form-data"
        <p><input type="text" name="fileinfo" value="">文件介绍</p> 
        <p><input type="file" name="myfile" value="浏览文件"></p> 
        <p><input type="submit" value="上 传"></p> 
    </form> 
  </body> 
</html> 

  注意:在上传表单中,既有普通文本域也有文件上传域

2.FileUplaodServlet.java清单如下:

?
package org.chris.fileupload; 
   
import java.io.File; 
import java.io.IOException; 
import java.util.Iterator; 
import java.util.List; 
   
import javax.servlet.ServletException; 
import javax.servlet.http.*; 
   
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileItemFactory; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
   
public class FileUplaodServletextends HttpServlet { 
   
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        doPost(request, response); 
    
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
           
        request.setCharacterEncoding("UTF-8"); 
           
        //文件的上传部分 
        boolean isMultipart = ServletFileUpload.isMultipartContent(request); 
           
        if(isMultipart) 
        
            try 
                FileItemFactory factory = new DiskFileItemFactory(); 
                ServletFileUpload fileload = new ServletFileUpload(factory); 
                   
//               设置最大文件尺寸,这里是4MB     
                fileload.setSizeMax(4194304); 
                List<FileItem> files = fileload.parseRequest(request); 
                Iterator<FileItem> iterator = files.iterator();    
                while(iterator.hasNext()) 
                
                    FileItem item = iterator.next(); 
                    if(item.isFormField()) 
                    
                        String name = item.getFieldName(); 
                        String value = item.getString(); 
                        System.out.println("表单域名为: " + name + "值为: " + value); 
                    }else 
                    
                        //获得获得文件名,此文件名包括路径 
                        String filename = item.getName(); 
                        if(filename != null
                        
                            File file = new File(filename); 
                            //如果此文件存在 
                            if(file.exists()){ 
                                File filetoserver = new File("d:\\upload\\",file.getName()); 
                                item.write(filetoserver); 
                                System.out.println("文件 " + filetoserver.getName() + " 上传成功!!"); 
                            
                        
                    
                
            }catch (Exception e) { 
                System.out.println(e.getStackTrace()); 
            
        
    

  3.web.xml清单如下:

复制代码
Java代码  <?xml version="1.0" encoding="UTF-8"?>  <web-app version="2.4"       xmlns="http://java.sun.com/xml/ns/j2ee"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee       http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">            <servlet>          <servlet-name>UploadFileServlet</servlet-name>          <servlet-class>              org.chris.fileupload.FileUplaodServlet          </servlet-class>      </servlet>        <servlet-mapping>          <servlet-name>UploadFileServlet</servlet-name>          <url-pattern>/UploadFile</url-pattern>      </servlet-mapping>            <welcome-file-list>          <welcome-file>/Index.jsp</welcome-file>      </welcome-file-list>        </web-app>  
复制代码