前提・実現したいこと
最近javaの学習を始めた者です。
servletとjspでCDの情報をアップロードするシステムをネットの情報を頼りに作っています。
フォームで画像をアップロードし、タイトルとアーティスト名と値段を入力、画像をWebContent配下のimagesフォルダに保存、入力した内容とファイル名をデータベースに保存したいと思っています。
発生している問題・エラーメッセージ
エラーは出ないですし、データベースへの保存は問題なく行えているのですが、
imagesフォルダに画像が保存されません。どのように記述すれば保存されるでしょうか。
後、「@MultipartConfig(location = "/tmp/")」の/tmp/が
何を指しているのか分かりません。ネットで調べた所一時保存するフォルダとの事ですが
今一ピンとこないのでlocation = "/tmp/"についても教えて頂きたいです。
該当のソースコード
java
1package management; 2 3import java.io.IOException; 4import java.sql.Connection; 5import java.sql.PreparedStatement; 6import java.sql.SQLException; 7 8import javax.servlet.ServletException; 9import javax.servlet.annotation.MultipartConfig; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14import javax.servlet.http.Part; 15 16import database.BaseDatabase; 17 18/** 19 * Servlet implementation class addProduct 20 */ 21@WebServlet("/AddProduct") 22@MultipartConfig(location = "/tmp/") 23public class AddProduct extends HttpServlet { 24 25 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 26 // TODO Auto-generated method stub 27 Part part = request.getPart("images"); 28 String fileName = part.getSubmittedFileName(); 29 part.write(getServletContext().getRealPath("/images") + "/" + fileName); 30 31 String title = request.getParameter("title"); 32 String artist = request.getParameter("artist"); 33 String price = request.getParameter("price"); 34 35 Connection con = null; 36 PreparedStatement stmt = null; 37 try { 38 con = BaseDatabase.getConnection(); 39 stmt = con.prepareStatement("INSERT INTO products (title,artist,price,images) VALUE (?,?,?,?)"); 40 stmt.setString(1, title); 41 stmt.setString(2, artist); 42 stmt.setString(3, price); 43 stmt.setString(4, fileName); 44 stmt.executeUpdate(); 45 request.setAttribute("msg", "アップロード完了"); 46 } catch(SQLException e) { 47 e.printStackTrace(); 48 } catch(Exception e) { 49 e.printStackTrace(); 50 } finally { 51 try { 52 if(stmt != null) {stmt.close();} 53 if(con != null) {con.close();} 54 } catch(SQLException e) { 55 e.printStackTrace(); 56 } catch(Exception e) { 57 e.printStackTrace(); 58 } 59 } 60 61 request.getRequestDispatcher("newProduct.jsp").forward(request, response); 62 63 } 64 }
java
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>商品追加画面</title> 8 9<jsp:include page="headerMng.jsp" /> 10 11<section class="admission"> 12<h2>新規商品追加</h2> 13<p>${requestScope['msg']}</p> 14<form action="AddProduct" method="post" enctype="multipart/form-data"> 15<input type="file" name="images" required> 16<input type="text" name="title" placeholder="タイトル" required> 17<input type="text" name="artist" placeholder="アーティスト" required> 18<input type="text" name="price" placeholder="プライス" required> 19<input type="submit" value="登録"> 20</form> 21</section> 22 23<jsp:include page="footer.jsp" />
java
1//headerMng.jsp 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4<link rel="stylesheet" href="css/reset.css"> 5<link rel="stylesheet" href="css/style.css"> 6<meta name="viewport" content="width=device-width,initial-scale=1.0"> 7</head> 8<body> 9<header class="header"> 10<h1><a href="index.jsp">ShopLink</a></h1> 11<a href="newProduct.jsp" class="cart">商品追加</a> 12<a href="customerList.jsp" class="account">顧客管理</a> 13</header>
java
1//footer.jsp 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4<footer>Copyright © shoplink All rights reserved</footer> 5</body> 6</html> 7
試したこと
@MultipartConfig(location = "/tmp/")の/tmp/を/imagesに変えて試してみたり、
PC上のtmpというフォルダを全て確認したりしました。
補足情報(FW/ツールのバージョンなど)
PCはmacでOSのバージョンは10.15.7、javaのバージョンは15、tomcatは9.0でeclipse使用です。
回答1件
あなたの回答
tips
プレビュー