AJAX ๋ก ํ์ผ ์ ๋ก๋ ํ๊ธฐ
AJAX ๋ก ํ์ผ์ ์ ๋ก๋ํ๊ธฐ ์ํด์๋ FormData ๊ฐ์ฒด๊ฐ ํ์ํ๋ค.
โ IE8 ๋ฒ์ ์์๋ ๋์ํ์ง ์๋๋ค!
๊ทธ๋ผ ๋จผ์ html ๋ฌธ์๋ฅผ ์์ฑํด๋ณด์
html
<form>
<table>
<caption>๊ธ์ฐ๊ธฐ</caption>
<tr>
<th>์์ฑ์</th>
<td>
<input type="text" name="user_name"/>
</td>
</tr>
<tr>
<th>์ ๋ชฉ</th>
<td>
<input type="text" name="subject" />
</td>
</tr>
<tr>
<th>๋ด์ฉ</th>
<td>
<textarea name="content"></textarea>
</td>
</tr>
<tr>
<th>ํ์ผ</th>
<td><input type="file" name="files" multiple="multiple" onchange="readFile(this)"/>
<div id="img_list"></div></td>
</tr>
<tr>
<th colspan = "2">
<input type="button" value="๊ธ ์ฐ๊ธฐ" onclick="save()"/>
</th>
</tr>
</table>
</form>
button ์ ๋๋ฅด๋ฉด onclick ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉฐ save() ํจ์๊ฐ ์คํ๋๋ค.java script
function save(){
var form = new FileData($('form')[0]);
$.ajax({
type: 'POST',
url: 'write.ajax',
enctype: 'multipart/form-data',
processData: false,
contentType: false,
data: form,
dataType: 'JSON',
success: function(data){
if(data.success){
location.href=data.page;
}
},error: function(e){
console.log(e);
}
})
}
$(์
๋ ํฐ) ๋ ๋ฌด์กฐ๊ฑด ๋ฐฐ์ด๋ก ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ๋ฃ์ด์ค์ผ ํ๋ค.enctype: 'multipart/form-data' : file์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ์ง์ ํด์ค์ผ ํ๋ค.success ๊ฐ true ์ผ ๊ฒฝ์ฐ page์ ๋ด๊ธด ์์น๋ก ์ด๋ํ๋ค.@PostMapping(value="/write.ajax")
@ResponsBody
public Map<String, Object> write(MultipartFile[] files, @RequestParam Map<String, Object> param){
boolean success = false;
int idx = service.write(param, files); // DB๋ก ๋ถํฐ ๋ฐ์์จ idx(PK) ์ ๋ณด๋ฅผ ๋ด์์ค๋ค.
String page = "";
if(idx != 0){
success = true;
page = "./detail.go?idx="+idx;
}
Map<String, Object> result = new HashMap<String, Object>();
result.put("success", success);
result.put("page", page);
return result;
}
@ResponsBody ์ด๋
ธํ
์ด์
์ ์ธMultipartFile[] : ์ฌ๋ฌ๊ฐ์ ํ์ผ์ ๋ฐ๊ธฐ ์ํด ์ ์ธ@RequestParam ์ฌ์ฉ์์ ์
๋ ฅ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๊ธฐ ์ํด ์ ์ธservice
public int write(Map<String, String> param, MultipartFile[] files) {
BoardDTO dto = new BoardDTO;
dto.setUser_name(param.get("user_name"));
dto.setSubject(param.get("subject"));
dto.setContent(param.get("content"));
int row = dao.write(dto);
int idx = dto.getIdx();
if(idx>0&&row>0) {
saveFile(files, idx);
}
return idx;
}
write() ๋ฉ์๋๋ฅผ ์คํํ๊ณ , idx๊ฐ์ ๊ฐ์ ธ์ ๋ณ์์ ๋ฃ์ด์ค๋ค.dto
int write(BoardDTO dto);
mapper
<insert
useGeneratedKeys="true"
keyColumn="idx"
keyProperty="idx"
id="write" parameterType="kr.co.gudi.dto.BoardDTO">
INSERT INTO bbs(user_name,subject,content)
VALUES(#{user_name}, #{subject},#{content})
</insert>