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
[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) } )
[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>
必要な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
<%@ 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=">
3 点击上传文件的时候弹窗出对话框 新建jsp文件upload.jsp
:
4新しいservletを作成します。 UploadServlet[java]view plin
copy
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
<servlet>
UploadServlet
UploadServlet
UploadServlet
com.lh.servlet.UploadServlet
UploadServlet
/UploadServlet
index.jsp