ここでは、サーブレットベースのファイルを非同期アップロードします。私はそれほどナンセンスを言っておらず、コードをアップロードするだけです。 。 。
パッケージcom.future.zfs.util; Import java.io.file; import java.io.io.ioexception; import java.io.io.printwriter; Import java.util.util.list; Import javax.servlet.servletexception; Import Javax.htp.httpservlet; javax.servlet.http.httpservletrequest; import javax.servlet.http.httservletresponse; Import org.apache.commons.fileupload.fileitem; Import org.apache.commons.fileupload.fileuploadexception; apache.commons.fileupload.fileuploadbase.sizelimitex cehcedexception; Import org.apache.commons.fileupload.diskfileitemactory; Import org.apache.commons.fileupload.servlet.servleletfilepload fileuploadServletはhttpservletを拡張します{final long max_size = 10 * 1024 * 1024; //最大アップロードされたファイルを10mに設定します。 {"jpg"、 "jpeg"、 "gif"、 "txt"、 "doc"、 "docx"、 "mp3"、 "wma"、 "m4a"、 "xls"}; public fileuploadservlet(){super(); } public void Destroy(){super.destroy(); } @Override Protected void Service(httpservletrequest request、httpservletResponse Response)servletexception、ioexception {respons.setContentType( "text/html"); // binester characterがutf-8にエンコードを設定して、漢字がresponsedを表示するように設定します。 //ハードディスクファイルファクトリをインスタンス化して、アップロードコンポーネントServleTFileupload DiskFileItemFactory DFIF = new DiskFileItemFactory(); dfif.setsizethreshold(4096); //ファイルをアップロードするときに一時的にファイルを保存するために使用されるメモリサイズを設定します。ここに4Kがあります。部品がハードディスクdfif.setrepository(new file(request.getRealPath( "/") + "uploadTemp"))に一時的に存在するものがあります。 servletfileupload(dfif); //最大アップロードサイズsfu.setsizemax(max_size)を設定します。 printwriter out = response.getWriter(); //リクエストリストからすべてのアップロードフィールドのリストを取得しますfilelist = null; try {filelist = sfu.parserequest(request); } catch(fileuploadexception e){//ファイルサイズが大きすぎる場合(e instanceof sizelimitex cehcedexception){out.println( "{message: 'ファイルサイズは指定されたサイズを超えます:"+max_size+"byte'}");戻る; } e.printstacktrace(); } //ファイルアップロードなしif(fileList == null || filelist.size()== 0){out.println( "{message: 'file'}}"); ");戻る; } //すべてのアップロードされたファイルを取得しますiterator fileitr = fileList.iterator(); //すべてのファイルをループhired(fileitr.hasnext()){fileitem fileitem = null;文字列パス= null; long size = 0; //現在のfileItem =(fileItem)fileitr.next();を取得します。 //アップロードされたドメインのファイルドメインの代わりに単純なフォームフィールドを無視します(<入力型= "テキスト" />など)if(fileitem == null || fileItem.isformfield()){continue; } // file path = fileItem.getName()のフルパスを取得します。 //ファイルサイズを取得= fileItem.getSize(); if( "" .equals(path)|| size == 0){out.println( "{message: 'file'}}"を選択してください);戻る; } //削除されたパス文字列t_name = path.substring(path.lastindexof( "//") + 1)のファイル名を取得します。 //ファイル拡張子を取得します(フルネームは拡張子なしで取得されます)文字列t_ext = t_name.substring(t_name.lastindexof( "。") + 1); //指定されたファイル形式の外側のファイルタイプを拒否しますint apposflag = 0; int aladpoldextcount = allowtype.length; for(; appledflag <aoptolextcount; approfflag ++){if(allowtype [approwflag] .equals(t_ext))break; } if(approwflag == aboldextcount){string message = ""; for(approwflag = 0; approfflag <aoptorextcount; aoptflag ++){message+= "*。" + AlladyType [apposflag] + ""; } out.println( "{message: '次のタイプのファイルをアップロードしてください"+message+"'}");戻る; } long now = system.currenttimemillis(); //システム時間文字列preix = string.valueof(now)に従ってアップロードした後に保存されたファイル名を生成します。 //保存された最終ファイルの完全なパスは、web u_name = request.getrealpath( "/") + "upload/" + prefix + "。"のルートディレクトリの下にあるアップロードディレクトリに保存されます。 + t_ext; //元のファイル名PATH = request.getRealPath( "/") + "upload/" + path; try {// file fileitem.write(new file(path)); Response.SetStatus(200); out.println( "{message:/"ファイルアップロードに正常にアップロードします。 " + prefix +"。 " + t_ext +"ファイルサイズ: " + size +" byte/"}"); } catch(Exception e){e.printstacktrace(); }}}} web.xml
<Servlet> <Servlet-Name> fileuploadServlet </servlet-name> <servlet-class> com.future.zfs.util.fileuploadservlet </servet-class> </servlet> <servlet> <servet-name> fileuuploadservlet </servlet-name </サーブレットマッピング>
ページをアップロードします
<%@ page Language = "Java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> < "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title>タイトルを挿入</タイトル> <スクリプト= "/javascript" "" "" src = "js/jquery.js"> </script> <script> <text/javascript "src =" js/ajaxfileupload.js "> </script> <script> <text/javascript"> function ajaxfileupload(){$( " })// file.ajaxcomplete(function(){$(this).hide();}); //ファイルのアップロード後に画像を非表示にするfile.ajaxcomplete(function(){$(this).hide();}); ajaxfileupload({url: 'fileuploadservlet'、//一般的に使用されるサーバーsecureuri:fails secureuri:fails secureuri:filed secureuri:files secureuri:fiels secureuri:file-side secureuri:file-side requed adsid fileElementId: 'file'、//ファイルのID属性アップロードspace <input = "file" id = "file" name = "file"/> datatype: 'json'、//戻り値タイプは一般にjson成功に設定されています:function(data、status)//サーバーは処理機能に正常に応答します{//Alert(//ALERT(//ALERT(///ALERT」 $( '#myspan')struts2で定義されています。 if(typeof(data.error)!= 'undefined'){if(data.error!= ''){//alert(data.error); $( '#myspan')。html(data.message); } else {//alert(data.message); $( '#myspan')。html(data.message); }}}、error:function(data、status、e)//サーバー応答の失敗処理関数{// alert(e); $( '#myspan')。html(e); }})falseを返します。 } </script> </head> <body> <img src = "images/loading.gif" id = "loading" style = "display:none;"> <span style = "color:red;" id = "myspan"> </span> <br/> <input type = "file" id = "file" file "file"/> <br/> <input type = "button" value "onclick =" return ajaxfileupload(); "> <a href =" </body> </html>サーブレットに基づいてアップロードするためにajaxfileuploadを使用する場合、response.setcontentType( "text/html")を設定する必要があることに注意してください。データ型:「JSON」はJSONに設定されていますが、応答を設定する必要があります。SetContentType( "text/html");それ以外の場合、サーバーによって返されるデータは取得できず、ダイアログボックスがポップアップします。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。