:への転載http://www.xdx97.com/#/single?bid=8b351a73-922c-eadc-512e-9e248a3efde9
ポスト道、背景と保存とフォームによってフロントエンド送信フォーム。より多くのコメントや他の機能にのみアップロードファイルを保持、ここでは省略されている、私は最初の研究を読んでお勧めします。
フロント:
<!DOCTYPE HTML > < HTML > < ヘッド> < メタ名= "コンテンツタイプ" コンテンツ= "text / htmlの;のcharset = UTF-8" > < タイトル>发布商品</ タイトル> </ ヘッド> < 身体> < フォームアクション= "../ COM / YH /がmyservlet / AddGoodsServlet" のenctype = "multipart / form-data"に方法= "POST" > 上传文件:<> < BR /> < 入力タイプ= "提出" 値= "提交" > </ 構成> </ ボディ> </ HTML >
リア:
パッケージcom.yh.myServlet; インポートのjava.io.File; 輸入java.io.FileOutputStreamは、 インポートにjava.io.IOException; 輸入java.io.InputStreamを。 輸入はjava.util.List; 輸入java.util.UUID。 輸入javax.servlet.ServletException; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入org.apache.commons.fileupload.FileItem; 輸入org.apache.commons.fileupload.disk.DiskFileItemFactory; インポートorg.apache.commons.fileupload.servlet.ServletFileUpload; パブリック クラス AddGoodsServletは延びHttpServletを{ / ** * * / プライベート 静的 最終 長いのserialVersionUID = 1L 。 @Overrideは、 保護された ボイドのdoGet(HttpServletRequestのリクエスト、HttpServletResponseの応答)が スローServletExceptionがは、IOException { // TODO自動生成方法スタブ } @Overrideが 保護 ボイドdoPostメソッド(HttpServletRequestのリクエスト、HttpServletResponseの応答)を スローServletExceptionがは、IOException { // TODO自動生成方法スタブ response.setContentType( "テキスト/ HTML;のcharset = UTF-8" )。 文字列関数savepath = この .getServletContext()getRealPath( "/ WEB-INF /アップロード"。 )。 関数savepath = savePath.replace( "\\"、 "\\\\" )。 ファイルファイル = 新しいファイル(関数savepath)。 もし(!file.exists()){ file.mkdir(); } でのInputStream = NULL ; FileOutputStreamアウト = nullを。 試します{ DiskFileItemFactory工場 = 新しいDiskFileItemFactory()。 ServletFileUploadアップロード = 新しいServletFileUpload(工場)。 upload.setHeaderEncoding( "UTF-8" ); 一覧 <FileItem>リスト= upload.parseRequest(リクエスト)。 用(FileItem項目:リスト){ 文字列のファイル名 = item.getName()。 もし(ファイル名== NULL。|| filename.trim()に等しい( "" )){ 続けます。 } ファイル名 = filename.substring(filename.lastIndexOf()+ 1 "" ); ファイル名 = UUID.randomUUID()。のtoString()+ "" + ファイル名; アウト = 新しいのFileOutputStream(関数savepath + "\\" + ファイル名); バイト []バッファ= 新しい バイト [1024 ]; int型のlen = 0 ; 中 = item.getInputStream()。 一方、((LEN = in.read(バッファ))> 0 ){ out.write(バッファ、 0 、LEN)。 } item.delete(); } } キャッチ(例外e){ e.printStackTrace(); } 最後に{ in.close()。 out.close(); } } }