<!-- *** 파일명! *** quick/create.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="sec"
uri="http://www.springframework.org/security/tags"%>
<div class="card card-primary">
<p>${quickVO}</p>
<div class="card-header">
<h3 class="card-title">Quick Example</h3>
</div>
<!--
요청 URI : /quick/createPost
요청파라미터 : {emailAdres=test@test.com,password=java,uploadFile=파일객체}
요청방식 : post
-->
<form action="/quick/createPost?${_csrf.parameterName}=${_csrf.token}"
method="post" enctype="multipart/form-data">
<div class="card-body">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label> <input
type="email" class="form-control" name="emailAdres" id="emailAdres"
readonly="readonly" value="${quickVO.emailAdres}" placeholder="이메일"
required="required" />
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label> <input
type="password" class="form-control" name="password" id="password"
readonly="readonly" value="${quickVO.password}" placeholder="비밀번호"
required="required" />
</div>
<div class="form-group">
<label for="exampleInputFile">File input</label>
<div class="input-group">
<div class="custom-file">
<input type="file" class="custom-file-input" id="uploadFile"
multiple="multiple" name="uploadFile"> <label
class="custom-file-label" for="uploadFile">Choose file</label>
</div>
</div>
</div>
</div>
<div>
<div class="filter-container p-0 row" style="padding: 3px; position: relative; width: 100%; display: flex; flex-wrap: wrap; height: 177px;">
<div class="filtr-item col-sm-2" data-category="1" data-sort="white sample" style="opacity: 1; transform: scale(1) translate3d(0px, 0px, 0px); backface-visibility: hidden;
perspective: 1000px; transform-style: preserve-3d; position: absolute; width: 91.4px; transition: all 0.5s ease-out 0ms, width 1ms ease 0s;">
<a href="https://via.placeholder.com/1200/FFFFFF.png?text=1" data-toggle="lightbox" data-title="sample 1 - white">
<img src="/resources/images/" class="img-fluid mb-2" alt="white sample">
</a>
</div>
</div>
</div>
<div class="card-footer">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
<sec:csrfInput />
</form>
</div>
detail.jsp
이미지 불러오기 확인
모달창으로 이미지 확대 띄우기
detail.jsp 마지막부분에 아래 코드 추가
<div class="modal fade" id="modal-lg">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">Large Modal</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer justify-content-between">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
detail.jsp 44번째 코드 수정
<a href="#modalPicture" data-toggle="modal">
스크립트 추가
<script type="text/javascript" src="/resources/js/jquery.min"></script>
<script type="text/javascript">
$(function () {
$(".clsPicture").on("click" , function () {
});
});
모달창 수정
<!-- ///// 이미지 크게 보기 모달 시작 /////-->
<div class="modal fade" id="modalPicture">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modalPicTitle">Large Modal</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modalPicBody">
<p>One fine body…</p>
</div>
<div class="modal-footer justify-content-between">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
<!-- ///// 이미지 크게 보기 모달 끝 /////-->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
ajax로 파일업로드하기
button에 아이디 부여 => id= btnAjaxSubmit
하나의 jsp 페이에서 id값은 유일해야 한다.
// ajax 파일업로드 시작 //////////////////////////////
// Ajax(Asynchronous비동기 JavaScript and XML)
// 응답이 없어도 작업을 수행한다.
$("#btnAjaxSubmit").on("click" , function () {
let itemName = $("#itemName").val();
let price = $("#price").val();
let description = $("#description").val();
let inputImgs = $("inputImgs"); //파일객체
// 이미지 파일들을 꺼내오자
let files = inputImgs[0].files;
//가상의 폼을 생성 <form></form>
let formData = new FormData();
formData.append("itemName" , itemName);
formData.append("price" , price);
formData.append("description" , description);
formData.append("inputImgs" , inputImgs);
// 가상폼인 formData에 각각의 이미지를 넣자
for(let i = 0 ; i < files.length ; i++){
formData.append("uploadfile" , files[i])
}
/*
<form>
<input type="text" name="itemName" value="삼성폰">
<input type="text" name="price" value="12000">
<input type="text" name="description" value="괜찮다">
<input type="file" name="uploadfile"...
<input type="file" name="uploadfile"...
//file의 name이 같다 => 배열로 받는다
</form>
*/
//ajax
$.ajax({
url : "/item/registerAjaxPost3",
processData : false,
contentType : false,
data : formData,
dataType : "json",
type : "post",
beforeSend:function(xhr){
xhr.setRequestHeader("${_csrf.headerName}","${_csrf.token}");
}, // beforeSend => 스프링 시큐리티에서 사용시 반드시 작성
success : function (result) {
console.log("result : " , result);
}
})
});
// ajax 파일업로드 끝 ///////////////////////////////