現在、ファイルアップロードには一般的に使用されている2つのメソッドがあります。1つはSmartupload 、もう1つはApacheのCommons fileuploadです。
ここでは、主に2番目の使用法を紹介します。まず、ファイルをアップロードし、いくつかの問題に注意を払う必要があります。
1フォームの形式で、スペース<入力タイプ= "ファイル" name = "myfile">を追加
2フォームフォームのコンテンツ形式は、MultiPart/Form-Data形式として定義する必要があります
3必要なクラスライブラリ:1 Commons-Io.Jar 2 Commons-Fileupload-1.3.1.jar
次に、使用法を見てみましょう。
まず、Apache Commons fileuploadの公式ドキュメントを読むと、次の一般的に使用される関数を見つけることができます。
1ファイル解析オブジェクトを作成します
コードコピーは次のとおりです。DiskFileuploadDiskFileupload= new DiskFileupload();
2ファイルを解析した後、リストに入れます。このクラスライブラリは複数のファイルのアップロードをサポートするため、結果はリストに保存されます。
コードコピーは次のとおりです。リスト<FileItem> list = diskfileupload.parserequest(request);
3アップロードされたファイルを入手して分析を実行します(必要ありません)
コードコピーは次のとおりです。fileremotefile = new file(new String(fileItem.getName()。getBytes()、 "utf-8"));
4新しいオブジェクトを作成し、ストリーミングコピーを実行します
file1 = new file(this.getServletContext()。getRealPath( "attachment")、remotefile.getName()); file1.getParentFile()。mkdirs(); file1.createNewFile(); inputstream ins = fileItem.getInputStream(); outputStream ous = new fileoutputStream(file1); try {byte [] buffer = new byte [1024]; int len = 0; while((len = ins.read(buffer))> -1)ous.write(buffer、0、len); out.println( "fileを保存する"+file1.getabsolutepath()+"<br/>"); }最後に{ous.close(); ins.close(); }このようにして、ファイルのアップロードを完了します。
fileupload.html
<form action = "servlet/uploadservlet" method = "post" enctype = "multipart/form-data"> <div align = "center"> <fieldset> <legend> uploadファイル</legend> <br/> <div align = "left" name = "file1"/> </div> <div align = "left"> upload file2 </div> <div align = "left"> <入力タイプ= "file" file2 "/> </div> <div> <div align = 'left' align = 'left'>アップロードファイル命令2 </div> <div align = 'left'> <input type = "text" name = "description2"/> </div> </div> <div> <div align = 'left'> <入力タイプ= 'value = "アップロードファイル"/> </div> </fieldset> </div> </</</</<
web.xml
<サーブレット> servlet-name> uploadservlet </servlet-name> <servlet-class> com.test.hello.uploadservlet </servlet-class> </servlet mapping> <servlet-name> uploadservlet </servet-name> <url-pattern>
uploadservlet.java
パッケージcom.test.hello; Import java.io.file; Import java.io.fileoutputStream; Import java.io.ioexception; Import java.io.inputStream; Import java.OutputStream; Import java.io.Printwriter; Import Java.util. javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; Import javax.servlet.servlet.httpservletResponse; Import org.apache.commons.fileupload.diskfileupload;インポートorg.apache.commons.fileupload.fileitem; Import org.apache.commons.fileupload.fileuploadexception; public class uploadservletは、オブジェクトのhttpservlet { /***構成要因を拡張します。 */ public uploadServlet(){super(); } /***サーブレットの破壊。 <br> */ public void Destroy(){super.destroy(); //ログに「Destroy」文字列を置くだけです//コードをここに置く} /***サーブレットのdogetメソッド。 <br> * *このメソッドは、フォームにタグ値メソッドが得られる場合に呼び出されます。 * * @paramリクエストクライアントがサーバーに送信するリクエストResponse.getWriter()。println( "ファイルを投稿にアップロードしてください"); } /***サーブレットのドポスト法。 <br> * *このメソッドは、フォームにタグ値メソッドが投稿に等しい場合に呼び出されます。 * * @paramリクエストクライアントからサーバーに送信されるリクエストのリクエストservletexception、ioexception {file file1 = null、file2 = null;文字列description1 = null、description2 = null; Response.setcharacterencoding( "utf-8"); request.setcharacterencoding( "utf-8"); Response.setContentType( "Text/HTML"); printwriter out = response.getWriter(); diskfileupload diskfileupload = new diskfileupload(); try {list <fileitem> list = diskfileupload.parserequest(request); out.println( "すべてのfileitems ... <br/>"); for(fileItem fileItem:list){if(fileitem.isformfield()){if( "description1" .equals(fileItem.getFieldName())){out.println( "description1 ... <br/>");説明1 = new String(fileItem.getString()。getBytes()、 "utf-8"); } if( "description2" .equals(fileitem.getFieldName())){out.println( "travel to description2 ... <br/>");説明2 = new String(fileItem.getString()。getBytes()、 "utf-8"); }} else {if( "file1" .equals(fileitem.getFieldName())){file remotefile = new file(new String(fileItem.getName()。getBytes()、 "utf-8")); out.println( "file1 ... <br/>"への移動); out.println( "クライアントファイルの場所:"+remotefile.getabsolutepath()+"<br/>"); file1 = new file(this.getServletContext()。getRealPath( "attachment")、remotefile.getName()); file1.getParentFile()。mkdirs(); file1.createNewFile(); inputstream ins = fileItem.getInputStream(); outputStream ous = new fileoutputStream(file1); try {byte [] buffer = new byte [1024]; int len = 0; while((len = ins.read(buffer))> -1)ous.write(buffer、0、len); out.println( "ファイルを保存する"+file1.getabsolutepath()+"<br/>"); }最後に{ous.close(); ins.close(); }} if( "file2" .equals(fileitem.getFieldName())){file remotefile = new file(new String(fileItem.getName()。getBytes()、 "utf-8")); out.println( "file2への旅行... <br/>"); out.println( "クライアントファイルの場所:"+remotefile.getabsolutepath()+"<br/>"); file2 = new file(this.getServletContext()。getRealPath( "Attachment")、remotefile.getName()); file2.getParentFile()。mkdirs(); file2.createNewFile(); inputstream ins = fileItem.getInputStream(); outputStream ous = new fileoutputStream(file2); try {byte [] buffer = new byte [1024]; int len = 0; while((len = ins.read(buffer))> -1)ous.write(buffer、0、len); out.println( "fileを保存する"+file2.getabsolutepath()+"<br/>"); }最後に{ous.close(); ins.close(); }}} out.println( "要求解析が完了した<br/> <br/>"); }} catch(fileuploadexception e){} out.println( "< out.println( "<head> <title> aサーブレット</title> </head>"); out.println( "<body>"); if(file1!= null){out.println( "<div>"); out.println( "<div align = 'left'> file1; </div>"); out.println( "<div align = 'left'> <a href = '"+request.getContextPath()+"/attachment/"+file1.getName()+"'ターゲット= _blank>"+file1.getName()+"</a>"); out.println( "</div>"); out.println( "</div>"); } if(file2!= null){out.println( "<div align = 'left'> file2; </div>"); out.println( "<div align = 'left'> <a href = '"+request.getContextPath()+"/attachment/"+file2.getName()+"'ターゲット= _blank>"+file2.getName()+"</a>"); out.println( "</div>"); out.println( "</div>"); } out.println( "<div>"); out.println( "<div align = 'left'>説明1:</div>"); out.println( "<div align = 'left'>"); out.println(description1); out.println( "</div>"); out.println( "</div>"); out.println( "</div>"); out.println( "<div align = 'left'>説明2:</div>"); out.println( "<div align = 'left'>説明2:</div>"); out.println( "<div align = 'left'>"); out.println( "</div>"); out.println( "</div>"); out.println( "</body>"); out.println( "</html>"); out.flush(); out.close(); } /***サーブレットの初期化。 <br> * * @throws servletexceptionエラーが発生した場合 */ public void init()throws servletexception {//コードをここに置く}}}実行例
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。