この記事では、例を使用して、commons-fileupload.jarの使用方法を紹介します。ファイルのアップロード関数を容易にするためのApacheのCommons-Fileupload.jar。特定のコンテンツは次のとおりです
Apacheのcommons-fileupload.jarをアプリケーションにWeb-inf/libの下に置くと、使用する準備が整います。次の例は、ファイルアップロード機能の使用方法を示しています。
使用されるFileuploadバージョンは1.2で、環境はEclipse3.3+myeclipse6.0です。 FileuploadはCommons IOに基づいているため、プロジェクトに参加する前に、Web-INF/LIBの下で、Commons IO(この記事でCommons-IO-1.3.2.jarを使用)のJARパッケージを決定します。
この記事は、記事の最後に添付ファイルにダウンロードできるプロジェクトの例です。
例1
最も簡単な例は、ServletFileupload静的クラスを介して要求を解析することです。 FactoryクラスFileItemFactoryは、ファイルフィールドだけでなく、Mulipartクラスの形ですべてのフィールドを処理します。 getname()get file name、getString()はフォームデータコンテンツを取得し、isformfield()は通常のフォームアイテムかどうかを判断できます。
demo1.html
<html> <head> <Meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title>ファイルアップロード</title> </head> <body> //マルチパートフォームデータでなければなりません。 <form name = "myform" action = "demo1.jsp" method = "post" enctype = "multipart/form-data">あなたの名前:<br> <入力= "text" name "size =" 15 "> <br>ファイル:<br> <入力タイプ="ファイル "name" name "myfile"> <br> <入力型= " </form> </body> </html>
demo1.jsp
<%@ page Language = "Java" contentType = "text/html; charset = gb18030" pageencoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload。 Import = "org.apache.commons.fileupload.disk。*"%> <%@ page Import = "Java.util。入力要求はマルチパートフォームデータです。 if(ismultipart == true){fileItemFactory Factory = new DiskFileItemFactory(); //リクエストの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(); //現在のプロジェクトが通常のフォームプロジェクトかアップロードファイルであるかを確認します。 if(item.isformfield()){//通常のフォームアイテムの場合、フォームコンテンツを表示します。 string fieldname = item.getFieldName(); if(fieldname.equals( "name"))// type = "text" name = "name" out.print( "field name is" + item.getString()); // form contentsを表示します。 out.print( "<br>"); } else {//ファイルをアップロードしている場合は、ファイル名を表示します。 out.print( "アップロードファイル名は" + item.getName()); out.print( "<br>"); }}} else {out.print( "enctypeはmultipart/form-data"); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> file upload </title> </head> </body> </html>結果:
フィールド名Isjeff
アップロードファイル名isd:/c言語テストサンプル/宿題の質問
例2
指定されたディレクトリに2つのファイルをアップロードします。
demo2.html
<html> <head> <メタhttp-equiv = "content-type" content = "text/html; charset = gb18030"> <title> file upload </head> </head> <body> <form name = "myform" action = "demo2.jsp" method = "post" enctype = "<br> <bbr"> name = "myfile"> <br> file2:<br> <入力タイプ= "file" name = "myfile"> <br> <br> <入力タイプ= "submit" name = "submit" value = "commid"> </form> </body> </html> </html>
Demo2.jsp
<%@ page Language = "Java" contentType = "text/html; charset = gb18030" pageencoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload。 Import = "org.apache.commons.fileupload.disk。*"%> <%@ page import = "java.util。*"%> <%@ page Import = "java.io。*"%> < 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()){//各file item =(fileitem)itr.next(); string filename = item.getName(); //パスを含むファイル名を取得します(filename!= null){file fullfile = new file(item.getName()); file savedfile = new file(uploadpath、fullfile.getName()); item.write(savedfile); }} out.print( "upload sceed"); } catch(Exception e){e.printstacktrace(); }} else {out.println( "enctypeはmultipart/form-data"); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> file upload </title> </head> </body> </html>結果:
アップロードは成功します
この時点で、「D:/TEMP」の下にアップロードした2つのファイルを表示できます。
例3
指定されたディレクトリにファイルをアップロードし、ファイルサイズを制限します。
demo3.html
<html> <head> <メタhttp-equiv = "content-type" content = "text/html; charset = gb18030"> <title> file upload </head> </head> <body> <form name = "myform" action = "demo3.jsp" method = "post" enctype = "<putpe =" << name = "myfile"> <br> <br> <入力型= "submit" name = "submit" value = "commid"> </form> </body> </html>
demo3.jsp
<%@ page Language = "Java" contentType = "text/html; charset = gb18030" pageencoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload。 import = "org.apache.commons.fileupload.disk。*"%> <%@ page import = "java.util。*"%> <%@ page import = "java.io。*"%> < file( "d:// temp"); // upload fileディレクトリif(!upload.exists()){uploadpath.mkdirs(); } //一時ファイルディレクトリファイルtemppathfile = new file( "d:// temp // buffer //"); if(!temppathfile.exists()){temppathfile.mkdirs(); } try {//ディスクベースのファイルの工場を作成します。 //工場制約を設定します工場。SetsizethReshold(4096); //バッファサイズを設定します。ここに4kb Factory.setRepository(temppathfile)があります。 // Buffer Directoryを設定//新しいファイルを作成しますHandler servletfileupload upload = new servletfileupload(Factory); //全体の要求サイズ制約upload.setsizemax(4194304)を設定します。 //最大ファイルサイズを設定します。ここに4MBリスト<fileItem> items = upload.parserequest(request); //すべてのファイルiterator <fileitem> i = items.iterator();を取得します。 while(i.hasnext()){fileitem fi =(fileitem)i.next();文字列filename = fi.getName(); if(filename!= null){file fullfile = new file(fi.getName()); file savedfile = new file(uploadpath、fullfile .getname()); fi.write(savedfile); }} out.print( "upload sceed"); } catch(Exception e){e.printstacktrace(); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> file upload </title> </head> </body> </html>例4
サーブレットを使用してファイルアップロードを実装します。
upload.java
パッケージcom.zj.sample; Import java.io.file; Import java.io.ioexception; Import java.util.iterator; Import java.util.list; import javax.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httppservletrequest; javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload; @suppresswarnings( "serial")パブリッククラスのアップロードhttpservlet {private string uploadpath = "d:// temp"; //ファイルをアップロードするためのディレクトリprivate string temppath = "d:// temp // buffer //"; //一時ファイルディレクトリファイルtemppathfile; @suppresswarnings( "unchecked")public void dopost(httpservletrequest request、httpservletresponse応答)Ioexception、servletexception {//ディスクベースのファイルアイテムのファクトリを作成するdiskfileitemactory Factory = new DiskfileItemfactory(); //工場制約を設定します工場。SetsizethReshold(4096); //バッファサイズを設定します。ここに4kb Factory.setRepository(temppathfile)があります。 // Buffer Directoryを設定//新しいファイルを作成しますHandler servletfileupload upload = new servletfileupload(Factory); //全体の要求サイズ制約upload.setsizemax(4194304)を設定します。 //最大ファイルサイズを設定します。ここに4MBリスト<fileItem> items = upload.parserequest(request); //すべてのファイルiterator <fileitem> i = items.iterator();を取得します。 while(i.hasnext()){fileitem fi =(fileitem)i.next();文字列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 success"); } catch(例外e){//エラーページをジャンプすることができますe.printstacktrace(); }} public void init()throws servletexception {file uploadfile = new file(uploadPath); if(!uploadfile.exists()){uploadfile.mkdirs(); } file temppathfile = new file(temppath); if(!temppathfile.exists()){temppathfile.mkdirs(); }}} demo4.html
<html> <head> <Meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> file upload </head> <body> // action = "fileupload"は、<url-pattern>の<url-pattern>の設定に対応します。 <form name = "myform" action = "fileupload" method = "post" enctype = "multipart/form-data"> file:<br> <入力タイプ= "ファイル" name "name" name "name"> "myfile"> <br> <input = "submit" name = "submit" value = "commid"> </for
web.xml
<Servlet> <Servlet-Name> upload </servlet-name> <servlet-class> com.zj.sample.upload </servlet-class> </servlet> <servlet-mapping> <servlet-name> upload> <url-pattern>/fileupload </url-perthn> </vervlet-mapping>
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。