ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๋๋ฐ , ๊ถํ์ ๊ฐ์ง ์ฌ๋๋ง ์ ํ์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ก๋ ํ ์์๊ฒ ํ๋ ค๋
์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด textarea๋ ์ธ๋จธ๋ ธํธ๊ฐ ์๋ ํ์ผ์ ๋ก๋๋ฅผ ํ๊ณ ๊ทธ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๋๋น์์ ์ฅํ ์์๊ฒ ํ๊ณ ์ถ์ด์ก๋ค.
์ด๋ฏธ์งํ์ผ์ ์ ๋ก๋ ํ ์์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์์ !
์ผ๋จ ํผ์ ๋ง๋ ํ ํ ์คํธ๋ฅผ ํด๋ณด์์ผ๊ฒ ๋ค
1. COS ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด
์ญ ๋ด๋ ค๊ฐ๋ฉด ๋ค์ด๋ก๋๊ฐ ๋ณด์ธ๋ค!
์ฑ ์์๋ ๋ฒ์ ๊ณผ๋ ๋ค๋ฅด์ง๋ง ๋ค์ด~
web-inf -> libํด๋์ ๋ฃ์ผ๋ฉด cos ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ค๋น ๋!!!
์์ฐ.. ๋๋์ด cos๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ง์ง ํ๋ฃจ์ข ์ผ ์๋ ๋ฐ๋นํ๊ฑฐ ๊ฐ๋ค
ํ ์คํธํ ํผ์ ์ฌ๋ผ์ก์ผ๋ ์ง๊ธ ํ๋ก์ ํธ ํผ์ผ๋ก ์ ๋ฆฌํด์ผ๊ฒ๋ .
1. form๋ฐ์ดํฐ๊ฐ ์๋ jspํ์ผ
formํ๊ทธ ์์ input type์ด file์ธ ๊ฒ๋ง ์ถ๊ฐํด๋๋๋ค.
๊ธฐ์กด์ ์๋ ํผ์ fileํ๊ทธ๋ง ์ถ๊ฐํ๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฑด ํผ ์์ฑ์ enctype="multipart/form-data" ์ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค.
<div class="card">
<div class="card-header">Ring ์ ํ ์
๋ก๋</div>
<div class="card-body">
<form action="/product?cmd=writeProc" method="POST"
enctype="multipart/form-data">
<div class="form-group">
<label for="images">product images upload</label>
<input type="file" class="form-control" name="images" id="img_input">
</div>
<div class="form-group">
<label for="productname">Ring Name</label> <input type="text"
class="form-control" placeholder="๋ง์ด๋ฆ" name="productname"
required="required" maxlength="50">
</div>
<div class="form-group">
<label for=madeof>Made Of</label> <input type="text"
class="form-control" placeholder="์ฌ์ง" name="madeof"
required="required" maxlength="50">
</div>
<div class="form-group">
<label for="content">Content</label> <input type="text"
class="form-control" placeholder="๋ฆฌ์คํธํ์ด์ง ๊ฐ๋จํ ์ค๋ช
" name="content"
required="required" maxlength="50">
</div>
<div class="form-group">
<label for="detail">detail</label>
<textarea name="detail" class="form-control" rows="10" cols="5"placeholder="๋ง ์ค๋ช
"></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
2. ํผ์ ๋ฐ์ ์คํํ javaํ์ผ
๋๋ uploadํ์ผ์ ์์ฑํ์ฌ ์ ์ฅํ ๊ฑฐ๋ผ์ savePath๋ผ๋ ๋ณ์ ์์ upload๋ฅผ ๋ฃ์ด์ฃผ์๋น
์ด ํ์ผ๋ ์ดํด๋ฆฝ์ค๊ฐ ๋ง๋ค์ด ์ฃผ๋๊ฑฐ ์๋๊ณ ๋ด๊ฐ ๋ง๋ค์ด์ฃผ์ด์ผํ๋ค. ๋ง๋ค์์๋ ์ฝ๋๋ ์๋๊ธด ํ๋๋ผ
๊ทธ ์๋๋ ์ ๋๊ฒฝ๋ก์ ์ฃผ์์ด๋ค. ์ ๋๊ฒฝ๋ก๋ก ์ ์ฅํ์ฌ JSPํ์ผ์ ๋ฟ๋ฆฌ๋ฉด ๋ ๊ฒ์ด๋ผ ์๊ฐํ๋๋ฐ ์๋์๋ค.
์ต์ด๊ฒฝ๋ก๊ฐ / ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ /๋ค์ ๊ฒฝ๋ก๋ก ์ ์ฅํด์ผ๋๋๋ผ..
์ง๊ธ ์๊ฐํด๋ณด๋ฉด ๋น์ฐํ๊ฑด๋ฐ ์ด๊ฑธ ๋ช์๊ฐ๋์์ด๋ ๋๋๊ฑฐ๋ ธ๋ค..
๋, enctype="multipart/form-data"์ ์์ฑ์ ๊ฐ์ง ๋ฐ์ดํฐ๋ request.getparmeter๋ก ๋ฐ์ผ๋ฉด ์๋๋๋ผ..
MultipartRequest๋ฅผ ์์ฑํด์ฃผ๊ณ ๊ฑฐ๊ธฐ์ ํ๋ผ๋ฉํฐ๋ฅผ ๊ฐ์ ธ์์ผํ๋ค.
์ ๋๊ฒฝ๋ก๋ ํ์ผ๋ช ๋ฑ์ ๋ถ๋ฌ์ค์ฃผ๋ ๋ฉ์๋๋ค์ด ๋ง์๋ฐ ๋ชจ๋ฅด๋๊น ํ๋์ฉ ๋ฟ๋ ค๋ดค๋ค.
๋๋ "/upload/~~~" ์ ๋ก๋๋ค์ ํ์ผ๋ช ๋ง ์ ์ด์ค๊ฒ์ด๊ธฐ๋๋ฌธ์ ํ์ผ๋ช ๋ง ๊ฐ๊ณ ์์ ๋๋น์ ์ ์ฅํ๋ค..
์ด๋ ๊ฒ ํ๋๋ฐ ๋ด์ผ ๋ชจ๋ ๊ฐ๋๋ฐ ์ ์ด๋ฐ ๋ ธ๊ฐ๋ค๋ฅผ ํ๋๋๊ณ ์์ด ์ง์ฑ ํ์ค๊ฑฐ ๊ฐ๋ค..
ํ๋ค๋ ๊ฒ์ ์๋ฏธ๋ฅผ ๋๊ฒ ๋ค..
public class ProductWriteProcAction implements Action {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String savePath="upload"; // ์ ์ฅํ๊ณ ์ถ์ ํ์ผ,
ServletContext context = request.getSession().getServletContext();//ํ๋ก์ ํธ ์ ๋๊ฒฝ๋ก
String uploadFilePath = context.getRealPath(savePath);
System.out.println(uploadFilePath);
MultipartRequest multi = new MultipartRequest(request, uploadFilePath, 1024 * 1024 * 2, "UTF-8",
new DefaultFileRenamePolicy());
String type = multi.getParameter("type");
String productname = multi.getParameter("productname");
String madeof = multi.getParameter("madeof");
String content = multi.getParameter("content");
String detail = multi.getParameter("detail");
String images = multi.getOriginalFileName("images");
ProductDao productDao = ProductDao.getInstance();
int result = productDao.save(type, productname, madeof, content, detail, images);
if (result == 1) {
RequestDispatcher dis = request.getRequestDispatcher("/product?cmd=list&type="+type);
dis.forward(request, response);
} else {
Script.back(response, "๊ธ ์
๋ ฅ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ต๋๋ค.");
}
}
}
3. DB์ ์๋ ์ด๋ฏธ์ง์ ํ ์คํธ๋ฅผ ๋ฟ๋ฆด jspํ์ผ
img src="" ์ด ๋ถ๋ถ์์ ๊ณ์ ์ค๋ฅ๊ฐ ๋ฌ๋ค..
DB์ ์๋๊ฒฝ๋ก๋ฅผ ์ ์ฅํด์ผํ ์ง, ์ ๋๊ฒฝ๋ก๋ฅผ ์ ์ฅํด์ผํ ์ง
๋ ๋ฟ๋ฆฌ๋ฆฌ๋ ์๋ฐ์ดํ๋ ํจ๊ป ๋ฟ๋ ค์ผํ๋๊ฑด๊ฐ ์ด๋ฐ์ ๋ฐ ๊ณ ๋ฏผ์ ๋ง์ดํ๋ค..
ํ๊ณ ๋๋๊น ์ง์ง ๋ณ๊ฑฐ ์๋๊ฑฐ ๊ฐ๋ค....
<!-- ๋ฐ๋ณต๊ตฌ๊ฐ -->
<c:forEach var="productList" items="${productList}">
<div class="post-entry-1 h-50">
<a href="#"> <img src="/upload/${productList.images}"
alt="Image" class="img-fluid">
</a>
<div class="post-entry-1-contents">
<span class="meta">${productList.productname}</span>
<h2>${productList.madeof}</h2>
<p>${productList.content}</p>
</div>
</div>
</c:forEach>
<!-- ๋ฐ๋ณต๊ตฌ๊ฐ ๋ -->
'java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
aws mysql ์๊ฐ ์ค์ ํ๊ธฐ (0) | 2021.02.27 |
---|---|
ํฐ์บฃ ์คํ ์ 404 ์ค๋ฅ (0) | 2021.02.27 |
AWS ํค ์ค๋ฅ (0) | 2021.02.27 |
ํ๋ก์ ํธ(2) - ํ๋ฉด์ค๊ณ (0) | 2020.11.12 |
ํ๋ก์ ํธ(1) - ์์ํ๊ธฐ (0) | 2020.11.12 |