###ファイルのアップロードとダウンロード -ファイルアップロード -クライアント 1は、入力タイプがファイルに設定されています。 図2は、方法ポストを形成するためのフォームは、(ファイル名ではなくファイル自体よりも、バック渡されるGET) 3、(バイナリ形式の転送データ)形式のenctypeマルチパート/フォームデータを形成する。 -サーバ commons-ファイルアップロードは、コモンズ-ioの 基本的な考え方:コモンズ・ファイルアップロードはFileItemの一般的なセットを取得するために、要求を解決することができます。 コモンズ-ファイルアップロードフォームフィールドやファイルのフィールドかどうか、すべての情報要求は、FileItemオブジェクトに解析されていることができます。 開発者は、FileItemコレクション操作は、アップロードを完了することができますのために。 アップロードコンポーネントは、集合からの2値データに解析され、したがって、開発を容易にすることができます。 JSP `` ` <% - のIntelliJ IDEAによって作成されます。 ユーザー:サウスウィンド 日:2019年7月28日 時間:20時16分 、このテンプレートを使用するファイルを変更するには|設定|ファイルのテンプレート。 - %> <%@ページのcontentType = "text / htmlの;のcharset = UTF-8"言語= "javaの" %> <HTML> <HEAD> <TITLE>タイトル</ TITLE> </ HEAD> <BODY> <フォームアクション=」 /upload.do」ENCTYPE = "マルチパート/フォームデータ" METHOD = "POST"> の<input type = "ファイル" NAME = "IMG" /> の<input type = "text"の名= "DESC" /> <入力タイプ= "提出"値= "上传" /> </ FORM> </ BODY> </ HTML> `` ` ` ``のJava パッケージcom.southwind.controller。 輸入org.apache.commons.fileupload.FileItem; 輸入org.apache。commons.fileupload.FileUploadException; 輸入org.apache.commons.fileupload.disk.DiskFileItemFactory; 輸入org.apache.commons.fileupload.servlet.ServletFileUpload。 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入java.io. *; 輸入はjava.util.List; @WebServlet( "/ upload.do") パブリッククラスUploadServletは延びHttpServletを{ @Overrideは、 ボイドのdoPost(HttpServletRequestのREQ、HttpServletResponseのRESP)はServletExceptionがを{スロー保護 //创建DiskFileItemFactory DiskFileItemFactory fileItemFactory =新しいDiskFileItemFactory()。 //创建文件解析器 ServletFileUploadアップロード=新しいServletFileUpload(fileItemFactory)。 //获取FileItem集合 {試みる int型の温度= 0; 一覧<FileItem>リスト= upload.parseRequest(REQ)。 //遍历リスト について(FileItem fileItem:リスト){ 場合(!fileItem.isFormField()){ 文字列fileNameに= fileItem.getName(); 試す{ InputStream InputStreamは= fileItem.getInputStream()。 文字列パス= req.getServletContext()getRealPath( "")。 OutputStream OutputStreamを=新しいのFileOutputStream(パス+ "/ファイル/" + fileNameに)。 一方、(!(TEMP = inputStream.read())= - 1){ outputStream.write(TEMP)。 } inputStream.close()。 outputStream.close(); }キャッチ(IOExceptionを電子){ e.printStackTrace(); } } } }キャッチ(FileUploadException電子){ e.printStackTrace(); } } } `` -文件下载 `JSP <% - のIntelliJ IDEAによって作成。 ユーザー:サウスウィンド 日:2019年7月28日 時刻:21:43 このテンプレートを使用するファイルを変更するには| 設定| ファイルのテンプレート。 - %> <%@ページのcontentType = "text / htmlの;のcharset = UTF-8"言語= "javaの" %> <HTML> <HEAD> <タイトル>タイトル</ TITLE> </ HEAD> <BODY> <a href="/download.do"> 1.png </a>の </ BODY> </ HTML> `` ` ` `` Javaの パッケージコム.southwind.controller; 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入java.io.FileInputStream; インポートにjava.io.IOException; 輸入java.io.InputStreamを。 インポートにjava.io.OutputStream; パブリッククラスするDownloadServletは{HttpServletを拡張 @Overrideを 保護されたボイドのdoGet(HttpServletRequestのREQ、HttpServletResponseのRESP)はServletExceptionがは、IOException {スロー resp.setContentType( "アプリケーション/ X-msdownloadを"); 文字列filename = "1.png"。 resp.setHeader( "コンテンツの廃棄"、 "添付ファイル;ファイル名=" + filename)で。 OutputStreamのOutputStream = resp.getOutputStream()。 文字列のパス= req.getServletContext()getRealPath( "")+ "/ファイル/" + fileNameに。 InputStream InputStreamは=新しいFileInputStreamを(パス)。 int型の温度= 0; 一方、(!(TEMP = inputStream.read())= - 1){ outputStream.write(TEMP)。 } outputStream.close()。 inputStream。閉じる(); } } `` `
download.jsp
<% - のIntelliJ IDEAによって作成されます。 ユーザー:サウスウィンド 日: 2019年7月28日 時間: 21:43 に変更するには、このテンプレートを使用するファイルを| 設定| ファイルのテンプレート。 - %> <%@ページのcontentType = "text / htmlの;のcharset = UTF-8"言語= "javaの" %> <HTML> <HEAD> <TITLE>タイトル</ TITLE> </ HEAD> <BODY> < HREF = "/ download.do"> 1.png </a>の <a href="/download.do"> 1.png </a>の </ BODY> </ HTML>
Upload.jsp
<% - のIntelliJ IDEAによって作成されます。 ユーザー:サウスウィンド 日: 2019年7月28日 時間: 20時16分 に変更するには、このテンプレートを使用するファイルを| 設定| ファイルのテンプレート。 - %> <%@ページのcontentType = "text / htmlの;のcharset = UTF-8"言語= "javaの" %> <HTML> <HEAD> <TITLE>タイトル</ TITLE> </ HEAD> <BODY> <フォームアクション= "/ upload.do"にenctype = "multipart / form-データ"方式= "ポスト"> の<input type = "ファイル"名= "IMG" /> の<input type = "text"の名= "DESC" /> <
web.xmlの
<?XMLバージョン= "1.0"エンコード= "UTF-8" ?> < ウェブアプリののxmlns = "http://xmlns.jcp.org/xml/ns/javaee" のxmlns:XSI = "のhttp://www.w3 .ORG / 2001 / XMLスキーマ・インスタンス" のxsi:schemaLocationの=" http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd " バージョン=" 4.0" > </ ウェブアプリ>
DownloadServlet.java
パッケージcom.southwind.controller。 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入java.io.FileInputStream; インポートにjava.io.IOException; 輸入java.io.InputStreamを。 インポートにjava.io.OutputStream; @WebServlet( "/download.do" ) パブリック クラスするDownloadServletが延びているのHttpServlet { @Override 保護 ボイドのdoGet(HttpServletRequestのREQ、HttpServletResponseのRESP)がスローServletExceptionがは、IOException { 文字列名 = req.getParameter( "名" ); resp.setContentType( "アプリケーション/ X-msdownload" )。 文字列filename = "1.png" 。 resp.setHeader( "コンテンツの廃棄"、 "添付ファイル;ファイル名=" + filename)で。 OutputStreamのOutputStream = resp.getOutputStream()。 文字列のパス = req.getServletContext()getRealPath( "")+ "/ファイル/" +。ファイル名; InputStream InputStreamは = 新しいですFileInputStreamを(パス)。 int型の温度= 0 ; 一方、(!(TEMP = inputStream.read())= - 1 ){ outputStream.write(TEMP)。 } outputStream.close()。 inputStream.close(); } }
UploadServlet.java
パッケージcom.southwind.controller。 輸入org.apache.commons.fileupload.FileItem; 輸入org.apache.commons.fileupload.FileUploadException。 輸入org.apache.commons.fileupload.disk.DiskFileItemFactory; 輸入org.apache.commons.fileupload.servlet.ServletFileUpload。 輸入javax.servlet.ServletException; 輸入javax.servlet.annotation.WebServlet; 輸入javax.servlet.http.HttpServlet。 インポートのjavax.servlet.http.HttpServletRequest; インポートのjavax.servlet.http.HttpServletResponse; 輸入 java.io. * ; 輸入はjava.util.List; @WebServlet( "/upload.do" ) パブリック クラス UploadServletが延びているのHttpServletは{ @Overrideは、 保護された ボイドのdoPost(HttpServletRequestのREQ、HttpServletResponseのRESP)スロー{ServletExceptionがを // 创建DiskFileItemFactory DiskFileItemFactory fileItemFactory = 新しいDiskFileItemFactory()。 // 创建文件解析器 ServletFileUploadアップロード= 新しいServletFileUpload(fileItemFactory)。 // 获取FileItem集合 してみてください{ 一覧 <FileItem>リスト=upload.parseRequest(REQ)。 // 遍历リスト について(FileItem fileItem:リスト){ 場合(!fileItem.isFormField()){ 文字列fileNameに = fileItem.getName(); 試す{ InputStream InputStreamは = fileItem.getInputStream()。 文字列パス = req.getServletContext()getRealPath( ""。 )。 OutputStream OutputStreamを = 新しいのFileOutputStream(パス+ "/ファイル/" + fileNameに)。 int型の温度= 0; 一方、(!(TEMP = inputStream.read())= - 1 ){ outputStream.write(TEMP)。 } inputStream.close()。 outputStream.close(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } } } キャッチ(FileUploadException電子){ e.printStackTrace(); } } }