Apacheが提供するCommons-Fileupload Jarパッケージは、ファイルをアップロードするのが非常に簡単です。最近、サーブレット/JSPを使用して画像アップロード機能を実行する必要があります。私はオンラインで多くの情報を見つけましたが、そのほとんどはStrutsフレームワークに基づいて紹介されています。それらのいくつかはコモンファイルプロードのアップロードも導入していますが、それらの例は比較的古く、いくつかのカテゴリは現在放棄されています。
研究と研究の概要を通じて、アップロード機能が最終的に完了しました。以下であなたと共有させてください。
ケースシナリオ
ライブラリバックエンド管理インターフェイスは、本の写真をアップロードし、最後にページに表示する機能を提供する必要があります。
効果を実現します
ブックの追加ページを入力すると、デフォルトの画像が「まだブレークスルーなし」(長さと幅の両方が200pxです)が表示され、次の画像に示すように「画像のアップロード」にボタンが提供されます。
下の図に示すように、[アップロード]ボタンをクリックすると、[画像のアップロード]ボタンをクリックすると、[モード]ウィンドウからアップロードされたインターフェイスが表示されます。
「参照」ボタンを使用して指定された画像を選択し、[アップロード]ボタンをクリックしてアップロードします。アップロードが成功した場合、成功したプロンプトがポップアップします。ユーザーが「OK」をクリックし、ポップアップウィンドウを閉じて、下の図に示すように、ページ上に新しい画像を自動的に表示します。
コード実装
firstブックを作成するページ:bookadd.jsp
ページID PHOTO_IDを使用した非表示のタグは、画像パスを保存するために使用されます。これは、背景への送信に便利でデータベースに保存され、IMG_IDのIDを持つ<IMG>タグは画像の表示に使用されます。すべての写真は、読みやすくするためにサーバーの下に保存されます。次に、キーJS、[ボタン]をクリックして、[モード]ウィンドウを介して[アップロード]ページをポップアップします。モードウィンドウがポップアップされると、変数ウィンが定義され、モードウィンドウで送信された画像パス値を取得するために使用されます。
(注:セキュリティの問題により、写真は自由に保存できません。プロジェクトがサーバーに展開されている場合、写真はサーバーの下でのみ表示できます。現在のサーバーの下にない写真を読む必要がある場合は、サーバーの仮想ディレクトリを構成する必要があります)
<html> <head> <title> book </title> <script type = "text/javascript"> // uploadページfunction openupload(){var win = window.showmodaldialog( "<%= root%>/admin/bookupload.jsp"、 "" "、" "、" inalogwidth:300px; if(win!= null){document.getElementById( "Photo_id")。value = win; document.getElementById( "IMG_ID")。src = "<%= root%>/"+win; }} </scrip> </head> <body> <h5> book </h5> <hr/> <p>本の表紙:<ラベル> <入力タイプ= "hidden" id = "photo_id" name = "photo" value = "images/noimg.png"> <input type = "button" button "onclick =" openupload( src = "<%= root%>/images/noimg.png"> </label> </body> </html> image画像ページをアップロードする、bookupload.jspを作成します
<base>タグを定義する必要があることに注意してください。データは、現在のモードウィンドウが閉じているときに親フォームに返すことができます。また、<form>タグは、プロパティenctype = "multipart/form-data"を設定する必要があります。これにより、提出されたファイルをバックグラウンドで取得できます。 [アップロード]ボタンをクリックして、ファイルを背景に送信します。残りのハイライトは、バックグラウンドアップロード処理です。
<html> <head> <メタhttp-equiv = "content-type" content = "text/html; charset = gbk"> <meta http-equiv = "pragma" content = "no-cache"/> <span style = "color:#ff0000;"> <base> </pittite <h5>画像アップロード</h5> <hr/> <p style = "color:red"> $ {requestscope.errormsg} </p> <form id = "form1" form1 "action =" <%= root%>/bookservlet?type = bookupload "method =" post "enctype =" "> form data 3m!</div> <div> <入力タイプ= "file" name = "file_upload"/> </div> <div> <入力タイプ= "value =" upload "/> </div> </form> </body> </html> </html> rater通常のサーブレットを作成しますが、一部のキーコードのみを以下に示します
Red Codeパーツはアップロードされたキーコードであり、その他は装飾として使用されます。これらの3つのステップを完了すると、簡単なアップロードが達成されます。
Public Class Bookservletはhttpservletを拡張します{private string uploadpath = "eshop/upload/"; //ファイルをアップロードするためのディレクトリprivate string temppath = "eshop/uploadtmp/"; //一時ファイルディレクトリプライベート文字列serverpath = null; private int sizemax = 3; //最大画像上限プライベート文字列[] filetype = new String [] {"。jpg"、 "。gif"、 "。bmp"、 "。png"、 "。Jpeg"、 "。Ico"}; public void doget(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {serverpath = getServletContext()。getRealPath( "/")。 //サーブレットが初期化されたときに実行します。アップロードされたファイルディレクトリが存在しない場合、if(!new file(serverPath+uploadPath).isdirectory()){new file(serverPath+uploadPath).mkdirs(); } if(!new file(serverPath+temppath).isdirectory()){new file(serverpath+temppath).mkdirs(); } <Span style = "color:#ff0000;"> diskFileItemFactory Factory = new DiskFileItemFactory(); </span> Factory.SetsizethReshold(5*1024); // Maximum Cache Factory.setRepository(new File(serverPath+Temppath)); //一時ファイルディレクトリ<span style = "color:#ff0000;"> servletfileupload upload = new servletfileupload(factory); </span> upload.setemax(sizemax*1024*1024); nult filepath; {<span style = "color:#ff0000;"> list <fileitem> items = upload.parserequest(request); </span> //すべてのファイルリスト(fileitemアイテム:アイテム)を取得{//ファイル名を取得する、このファイル名はパス<span style = "color:#ff0000;"> if(!spanispilfild){</spring() item.getname()。tolowercase(); if(filename.endswith(filetype [0]))|| filename.endswith(filetype [1])|| filename.endswith(filetype [2])|| filename.endswith(filetype [3])|| filename.endswith(filetype [4])|| filename.endswith(filename.endswith.)|| uuid.randomuuid()。toString(); filepath = serverpath+uploadpath+uuid+filename.substring(filename.lastindexof( "。")); <span style = "color:#ff0000;"> item.write(new file(filepath)); </span> printwriter pw = response.getWriter(); pw.write( "<script> alert( 'uploaded uploaded uploaded'); window.returnvalue = '"+uploadpath+uuid+filename.substring(filename.lastindexof( "。"))+"'; window.close(); </script>"); pw.flush(); pw.close(); } else {request.setAttribute( "errormsg"、 "アップロード障害、アップロードされたファイルが存在し、写真であることを確認してください!"); request.getRequestDispatcher( "/admin/bookupload.jsp")。 }}}} catch(Exception e){e.printstacktrace(); request.setAttribute( "errormsg"、 "アップロード障害、アップロードされたファイルサイズが"+sizemax+"m"を超えないことを確認してください); request.getRequestDispatcher( "/admin/bookupload.jsp")。 }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。