今回は、「添付ファイルの扱い(3)―テキストファイルのアップロード―」です。
サーバーへテキストファイルをアップロードしてみましょう。
■動画はこちら
■動画で使用しているソースコード
HTML(test15.html)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action="./sv15" method="post" enctype="multipart/form-data"> <input type="file" name="txtFile" /><br /> <br /> <input type="submit" value="送信" /> </form> </body> </html> |
サーブレット(Sv15.java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package yurufuwa.prog.sample; import java.io.IOException; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.MultipartConfig; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.Part; @MultipartConfig public class Sv15 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //パート(file)の取得 Part filePart = request.getPart("txtFile"); //ファイル名を取得 String fileName = filePart.getSubmittedFileName(); //ファイルの保存 filePart.write("d:\\work\\" + fileName); //ブラウザにレスポンスを返す response.getWriter() .append("<html><head><meta charset=\"utf-8\"></head><body>") .append("<h3>ファイルを受信しました。</h3>") .append("ファイル名:") .append(fileName) .append("</body></html>"); } } |
HTML(test16.html)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action="./sv16" method="post" enctype="multipart/form-data"> <input type="file" name="txtFile" /><br /> <br /> メモ1:<input type="text" name="txtMemo1" /><br /> メモ2:<input type="text" name="txtMemo2" /><br /> <br /> <input type="submit" value="送信" /> </form> </body> </html> |
サーブレット(Sv16.java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | package yurufuwa.prog.sample; import java.io.IOException; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.MultipartConfig; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.Part; @MultipartConfig public class Sv16 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //パート(file)の取得 Part filePart = request.getPart("txtFile"); //ファイル名を取得 String fileName = filePart.getSubmittedFileName(); //ファイルの保存 filePart.write("d:\\work\\" + fileName); //メモの取得 String memo1 = request.getParameter("txtMemo1"); String memo2 = request.getParameter("txtMemo2"); //読み込んだ内容を出力 response.getWriter() .append("<html><head><meta charset=\"utf-8\"></head><body>") .append("<h3>ファイルを受信しました。</h3>") .append("ファイル名:") .append(fileName) .append("<br />") .append("メモ1:") .append(memo1) .append("<br />") .append("メモ2:") .append(memo2) .append("</body></html>"); } } |
HTML(test17.html)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <form action="./sv17" method="post" enctype="multipart/form-data"> <input type="file" name="txtFile" /><br /> <br /> メモ1:<input type="text" name="txtMemo1" /><br /> メモ2:<input type="text" name="txtMemo2" /><br /> <br /> <input type="submit" value="送信" /> </form> </body> </html> |
サーブレット(Sv17.java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package yurufuwa.prog.sample; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.MultipartConfig; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.Part; @MultipartConfig public class Sv17 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //パート(file)の取得 Part filePart = request.getPart("txtFile"); //ファイル名を取得 String fileName = filePart.getSubmittedFileName(); //テキストファイルの読み込み StringBuilder sb = new StringBuilder(); try (InputStream is = filePart.getInputStream(); InputStreamReader isr = new InputStreamReader(is,"UTF-8"); BufferedReader br = new BufferedReader(isr)) { String line = null; while ((line = br.readLine()) != null) { sb.append(line + "<br />"); } } //メモの取得 String memo1 = request.getParameter("txtMemo1"); String memo2 = request.getParameter("txtMemo2"); //読み込んだ内容を出力 response.getWriter() .append("<html><head><meta charset=\"utf-8\"></head><body>") .append("ファイル名:") .append(fileName) .append("<br />") .append("メモ1:") .append(memo1) .append("<br />") .append("メモ2:") .append(memo2) .append("<hr />") .append(sb.toString()) .append("</body></html>"); } } |
共通
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="WebApp_ID" version="5.0"> <display-name>testWeb</display-name> <servlet> <description></description> <display-name>Sv15</display-name> <servlet-name>Sv15</servlet-name> <servlet-class>yurufuwa.prog.sample.Sv15</servlet-class> </servlet> <servlet> <description></description> <display-name>Sv16</display-name> <servlet-name>Sv16</servlet-name> <servlet-class>yurufuwa.prog.sample.Sv16</servlet-class> </servlet> <servlet> <description></description> <display-name>Sv17</display-name> <servlet-name>Sv17</servlet-name> <servlet-class>yurufuwa.prog.sample.Sv17</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sv15</servlet-name> <url-pattern>/sv15</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Sv16</servlet-name> <url-pattern>/sv16</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Sv17</servlet-name> <url-pattern>/sv17</url-pattern> </servlet-mapping> </web-app> |