commons-fileupladを使ってサーバーにファイルをアップロードします。

17557 ワード

自動回転http://blog.csdn.net/lcyong_/articale/detail/70227161
必要なjar
commons-fileuplload-1.3.2
commons-to-1.4
servlet-appi
特に注意してください。commons-fileuploadはcommons-iと一緒に使わなければなりません。バージョンに注意してください。他のバージョンは間違えやすいです。
1 プロジェクトを新規作成し、jarパッケージを導入します。
2新しいjspファイルindex.jspは以下の通りです。
[html]view plin
copy
print
<%@ page laguage=java import=「java.util.*」 pagenenccoding=「UTF-8」%   <%   String パス = request.get ContectPath()   String basePath = request.get Scheme()+":/"+request.get ServerName()+":"+request.get ServerPort()+path+"/"   %   HTML >   <>>     <ヘッド>       <ベース href=">       ファイルアップロードtitle>   </li>      <スクリプト type=「text/javascript」 laguage=「JavaScript」   </li>          機能 prom {   </li>              window.open(「up load.jsp」、「_blank」、「height=400、width=500」)   </li>   </li>          }   </li>      スクリプト>   </li>  ヘッド>   </li>  <body>   </li>  <ブトン value=「アップロードファイル」button>   </li>  <input type=「button」 value=「upload」 onclick=「prom()」/>   </li>  body>   </li>html   </li><pre><code> <base href="<%=basePath%>"/> <title>文件上传 function prom() { window.open("upload.jsp","_blank","height=400,width=500") }




3 点击上传文件的时候弹窗出对话框   新建jsp文件upload.jsp
[html] view plain copy
print ?
  1. <%  
  2.     String path = request.getContextPath();  
  3.     String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;  
  4. %>  
  5. <base href=“”>  
  6. <form method=“post” action=“UploadServlet” enctype=“multipart/form-data”>  
  7.     <table width=“400” height=“200”>  
  8.         <tr>  
  9.             <td height=“20”>td>  
  10.         tr>  
  11.         <tr>  
  12.             <td height=“20”>td>  
  13.         tr>  
  14.         <tr>  
  15.             <td align=“center”>选择上传文件:(文件大小不要超过2MB)td>  
  16.         tr>  
  17.         <tr>  
  18.             <td align=“center”> <input type=“file” name=“file1” size=“50” value=“选择文件”>td>  
  19.         tr>  
  20.         <tr>  
  21.             <td align=“center”> <input type=“submit” value=“开始上传”>td>  
  22.   
  23.         tr>  
  24.         <tr>  
  25.             <td height=“40”>td>  
  26.         tr>  
  27.     table>  
  28. form>  
  29. 结果:<%=request.getAttribute(“result”)%>  


:( 2MB)
:
4新しいservletを作成します。   UploadServlet
[java]view plin
copy
print
package come.lh.servlet;      import java.io.*;   import java.util.*;   import org.apache.com mmons.fileuplad.*;   import org.apache.com mmons.fileuplad.disk.Disc FileItem Factory;   import org.apache.com mmons.fileuplad.servlet.Servlet FileUpload;      import javax.servlet.*;   import javax.servlet.http.*;      public クラス UploadServlet extens HttpServlet {          public void doPost(HttpServlet Request) request HttpServlet Resonse レスポンス)               ローソン Servlet Exception、 IOException {           request.set CharcterEnccoding("UTF-8")           String Path=get ServletConttext().getRealPath("/")+「uplad」          //アップロードファイルのアドレスを定義します。              System.out.print(Path);           ファイル フォルダー = new File(Path)           if(!folder.exists()               folder.mkdirs()           String メッセージ=null           if(Servlet FileUpload.isMultiiprtContinet){  //取得するかどうかを判断するのはファイルです。               Disc FileItem Factory disk=new Disc FileItem Factory()               disk.set Size Thresold(20*1024)                 //メモリの保存可能バイト数を設定します。               disk.set Repository;       //一時ファイルディレクトリを設定               Servlet FileUpload up=new Servlet FileUpload(disk)               要点 maxsize=200*1024*1024;               List リスト=null               try{                   System.err.print("--");                   list=up.parseRequest;              //アップロードリストを取得               }               catch(Exception) e){                   e.print StockTrace();               }               Iterator i=list.iterator()                     //リストを作成するプレーン               while(i.has Next(){                   FileItem fm=(FileItem)i.next()             //リストを巡回                   if(!fm.isFormField(){                       String fname=fm.getName()              //ファイル名を取得                       String filePath =fm.getName()  //ファイルのフルパス名を取得                       String fileName=""";                       要点 startIndex = filePath.lastIndexOf(\);                       if(startIndex!=-1){                     //ファイル名を切り取ります。                           fileName = filePath.substring(startIndex+1)                       }else{                           fileName=filePath;                       }                       if(fm.getSize()>maxsize){                           メッセージ="ファイルが大きすぎます。200 MBを超えないでください。"                           break;                       }                       String fileSize=new Long(fm.getSize().toString()                       if((fname==null)𞓜(fname.equals)&(fileSize.equals){0}                           メッセージ="ファイル名は空ではなく、ファイルサイズもゼロではありません!"                           break;                       }                       ファイル saveFile=new File(Path,fileName)                       try{                           fm.write//ファイルにデータを書き込みます。                                                     メッセージ="ファイルアップロード成功!"                          }                       catch(Exception) e 1){                           e 1.print StockTrace()                       }                   }               }           }           request.set Attribute(「request」、message);           Request Displatch rd=request.get Request Displatch("uplload.jsp")           d.forward(request) レスポンス          }          public void init(Servlet Config) config ローソン Servlet Exception {           super.init(config)       }        )  
package com.lh.servlet;

import java.io.*;
import java.util.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.*;
import javax.servlet.http.*;

public class UploadServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String Path=getServletContext().getRealPath("/")+"upload";          //         

        System.out.print(Path);
        File folder = new File(Path);
        if(!folder.exists())
            folder.mkdirs();
        String message=null;
        if(ServletFileUpload.isMultipartContent(request)){  //          
            DiskFileItemFactory disk=new DiskFileItemFactory();
            disk.setSizeThreshold(20*1024);                 //         
            disk.setRepository(disk.getRepository());       //        
            ServletFileUpload up=new ServletFileUpload(disk);
            int maxsize=200*1024*1024;
            List list=null;
            try{
                System.err.print("-----------------");
                list=up.parseRequest(request);              //      
            }
            catch(Exception e){
                e.printStackTrace();
            }
            Iterator i=list.iterator();                     //        
            while(i.hasNext()){
                FileItem fm=(FileItem)i.next();             //    
                if(!fm.isFormField()){
                    String fname=fm.getName();              //     
                    String filePath =fm.getName();  //        
                    String fileName="";
                    int startIndex = filePath.lastIndexOf("\\");
                    if(startIndex!=-1){                     //        
                        fileName = filePath.substring(startIndex+1);
                    }else{
                        fileName=filePath;
                    }
                    if(fm.getSize()>maxsize){
                        message="     ,    200MB";
                        break;
                    }
                    String fileSize=new Long(fm.getSize()).toString();
                    if((fname==null)||(fname.equals(""))&&(fileSize.equals("0"))){
                        message="       ,         !";
                        break;
                    }
                    File saveFile=new File(Path,fileName);
                    try{
                        fm.write(saveFile);//        

                        message="      !";

                    }
                    catch(Exception e1){
                        e1.printStackTrace();
                    }
                }
            }
        }
        request.setAttribute("result",message);
        RequestDispatcher rd=request.getRequestDispatcher("upload.jsp");
        rd.forward(request, response);

    }

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

}
5 web.xmlファイルには以下のように構成されています。
[html]view plin
copy
print
<servlet>      UploadServlet description>      UploadServletdisplay-name>      UploadServlet-name>      comp.lh.servlet.UploadServlet-clast>    servlet>             UploadServlet-name>      /UploadServleturl-pattern>    servlet-mapping>          index.jspwelcome-file>    welcome-file-list>  
 
    UploadServlet
    UploadServlet
    UploadServlet
    com.lh.servlet.UploadServlet
  

  
    UploadServlet
    /UploadServlet
  
  
    index.jsp