java 上传1(使用java组件fileupload)

使用fileupload要添加以下包

 

例子1

后台程序

    @RequestMapping(value="demo1")
    public String demo1(HttpServletRequest request,HttpServletResponse response){
        
        return "/demo1";
    }
    
    @RequestMapping(value="demo1U",method=RequestMethod.POST)
    public String demo1U(HttpServletRequest request,HttpServletResponse response) throws FileUploadException{
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);//检查输入请求是否为multipart表单数据。
        if (isMultipart == true) {
           FileItemFactory factory = new DiskFileItemFactory();//为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。
           ServletFileUpload upload = new ServletFileUpload(factory);
           List<FileItem> items = upload.parseRequest(request);
           Iterator<FileItem> itr = items.iterator();
           while (itr.hasNext()) {
               FileItem item = (FileItem) itr.next();
               //检查当前项目是普通表单项目还是上传文件。
               if (item.isFormField()) {//如果是普通表单项目,显示表单内容。
                   String fieldName = item.getFieldName();
                   if (fieldName.equals("name")) //对应demo1.html中type="text" name="name"
                   System.out.print("the field name is" + item.getString());//显示表单内容。
               }
               
               else {//如果是上传文件,显示文件名。
                   System.out.print("the upload file name is" + item.getName());
               }
           }
        } else {
            System.out.print("the enctype must be multipart/form-data");
        }      
        return null;
    }

 

前台jsp

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>demo1</title>
  </head>
 
  <body>
       //必须是multipart的表单数据。
    <form name="myform" action="<%=basePath%>/upload/demo1U" method="post" enctype="multipart/form-data">
       Your name: <br>
       <input type="text" name="name" size="15"><br>
       File:<br>
       <input type="file" name="myfile"><br>
       <br>
       <input type="submit" name="submit" value="Commit">
    </form> <br>
  </body>
</html>

 

 


 

 

例子2

后台程序

    @RequestMapping(value="demo2")
    public String demo2(HttpServletRequest request,HttpServletResponse response){
        
        return "/demo2";
    }
    
    @RequestMapping(value="demo2U",method=RequestMethod.POST)
    public String demo2U(HttpServletRequest request,HttpServletResponse response) throws FileUploadException{
    
        String uploadPath="D:\\temp";
          boolean isMultipart = ServletFileUpload.isMultipartContent(request);
          if(isMultipart==true){
              try{
                FileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload upload = new ServletFileUpload(factory);
                List<FileItem> items = upload.parseRequest(request);//得到所有的文件
               Iterator<FileItem> itr = items.iterator();
                while(itr.hasNext()){//依次处理每个文件
                 FileItem item=(FileItem)itr.next();
                 String fileName=item.getName();//获得文件名,包括路径
                 if(fileName!=null){
                     File fullFile=new File(item.getName());
                     File savedFile=new File(uploadPath,fullFile.getName());
                     item.write(savedFile);
                 }
                }
                System.out.print("upload succeed");
              }
              catch(Exception e){
                 e.printStackTrace();
              }
          }
          else{
              System.out.println("the enctype must be multipart/form-data");
          }
        
        
        return null;
    }

前台jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>demo2</title>
  </head>
 
  <body>
    <form name="myform" action="<%=basePath%>/upload/demo2U" method="post" enctype="multipart/form-data">
       File1:<br>
       <input type="file" name="myfile"><br>
       File2:<br>
       <input type="file" name="myfile"><br>
       <br>
       <input type="submit" name="submit" value="Commit">
    </form>
  </body>
</html>

 

 


 

 

例子3

 

后台程序

    @RequestMapping(value="demo3")
    public String demo3(HttpServletRequest request,HttpServletResponse response){
        
        return "/demo3";
    }
    
    
    @RequestMapping(value="demo3U",method=RequestMethod.POST)
    public String demo3U(HttpServletRequest request,HttpServletResponse response) throws FileUploadException{
    
        File uploadPath = new File("D:\\temp");//上传文件目录
        if (!uploadPath.exists()) {
           uploadPath.mkdirs();
        }
        // 临时文件目录
        File tempPathFile = new File("d:\\temp\\buffer\\");
        if (!tempPathFile.exists()) {
           tempPathFile.mkdirs();
        }
        try {
           DiskFileItemFactory factory = new DiskFileItemFactory();
           factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
           factory.setRepository(tempPathFile);//设置缓冲区目
           ServletFileUpload upload = new ServletFileUpload(factory);    
           upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
     
           List<FileItem> items = upload.parseRequest(request);//得到所有的文件
           Iterator<FileItem> i = items.iterator();
           while (i.hasNext()) {
               FileItem fi = (FileItem) i.next();           
               String fileName = fi.getName();
               if (fileName != null) {
           File fullFile = new File(fi.getName());
           File savedFile = new File(uploadPath, fullFile
                  .getName());
           fi.write(savedFile);
               }
           }
           System.out.print("upload succeed");
        } catch (Exception e) {
           e.printStackTrace();
        }
        return null;
    }

前台jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>demo3</title>
      </head>
 
  <body>
       //必须是multipart的表单数据。
    <form name="myform" action="<%=basePath%>/upload/complete" method="post" enctype="multipart/form-data">
       File:<br>
       <input type="file" name="myfile"><br>
       <br>
       <input type="submit" name="submit" value="Commit">
    </form>
  </body>
</html>

 

 


 

 

 

例子4 通用的例子(待以后修改)

 

后台程序

    @RequestMapping(value="complete",method=RequestMethod.POST)
    public String complete(HttpServletRequest request,HttpServletResponse response) throws FileUploadException{
    
        File uploadPath = new File("D:\\temp");//上传文件目录
        if (!uploadPath.exists()) {
           uploadPath.mkdirs();
        }
        // 临时文件目录
        File tempPathFile = new File("d:\\temp\\buffer\\");
        if (!tempPathFile.exists()) {
           tempPathFile.mkdirs();
        }
        try {
           DiskFileItemFactory factory = new DiskFileItemFactory();
           factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
           factory.setRepository(tempPathFile);//设置缓冲区目
           ServletFileUpload upload = new ServletFileUpload(factory);    
           upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB
     
           List<FileItem> items = upload.parseRequest(request);//得到所有的文件
           Iterator<FileItem> i = items.iterator();
           while (i.hasNext()) {
               FileItem fi = (FileItem) i.next();
               if(fi.isFormField()){//如果是普通的表单字段
                   
               }else{//如果是上传文件,显示文件名。
                   String fileName = fi.getName();
                   if (fileName != null) {                     
                       //检查文件后缀格式  
                   String fileEnd = fileName.substring(fileName.lastIndexOf(".")+1).toLowerCase();  
                   
                   List<String> extList=new ArrayList<String>();
                   extList.add("sql");
                   extList.add("txt");
                     if(extList.contains(fileEnd)){
                         File fullFile = new File(fi.getName());
                         File savedFile = new File(uploadPath, fullFile.getName());
                         fi.write(savedFile);
                     }else{
                         System.out.print("ext error");
                     }               
                   }
               }           
           }
           System.out.print("upload succeed");
        } catch (Exception e) {
           e.printStackTrace();
        }
        return null;
    }
posted @ 2014-12-09 17:47  crazyYong  阅读(1480)  评论(0编辑  收藏  举报