์ด๋ฒ ๊ธ์์๋ ajax๋ฅผ ์ด์ฉํ์ฌ ํ์ผ์ ์๋ฒ์ ์ ๋ก๋ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ajax๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ตณ์ด ํ์ผ ์ ์ก์ ์ํ์ฌ form ํ๊ทธ๋ก ๊ฐ์ธ์ค ํ์๊ฐ ์์ต๋๋ค.
์ด ๊ธ์ ์คํ๋ง ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค.
# Front
<script type="text/javascript">
$(()=>{
$('#fileSubmitBtn').on("click",function(){
var form = $('#attachFile')[0].files[0];
var formData = new FormData();
formData.append('files', form);
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "/test/main2.do",
data: formData,
processData: false,
contentType: false,
cache: false,
timeout: 600000,
success: function (data) {
alert("์ฑ๊ณต");
},
error: function (e) {
alert("์คํจ");
}
});
});
})
</script>
<html>
<head>
<meta charset=UTF-8">
<title>๊ฒฐ๊ณผ์ฐฝ</title>
</head>
<body>
<input type="file" id="attachFile">
<div id="fileSubmitBtn">์ ์ถํ๊ธฐ</div>
</body>
</html>
ajax์ ์์ฑ ๋๋จธ์ง๋ ์๊ฑฐ๋ผ ์๊ฐํ๊ณ processData๋ง ์ง๊ณ ๋์ด๊ฐ๋ณด๊ฒ ์ต๋๋ค.
processData๋ ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ์ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ query string ์ด๋ผ๋ ํํ๋ก ์ ๋ฌ๋ฉ๋๋ค.
http://example.com/over/there?title=Main_page&action=raw
? ๋ค์ ์ฟผ๋ฆฌ์คํธ๋ง์ด ์ ๋ฌ๋ฉ๋๋ค. ์ฃผ์ํ ์ ์ ํ์ผ ์ ์ก์ด ์์ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฐ๋์ false๋ก ํด์ฃผ์ด์ผ ํฉ๋๋ค.
# Back
@Controller("mainController")//์ ๋ํ
์ด์
์ ์ด์ฉํด ๋น์ผ๋ก ์๋ ๋ณํ
@RequestMapping(value="/test")//ํด๋์ค ๋จ๊ณ์ url ๋งตํ
public class MainController {
@RequestMapping(value="/main1.do", method = RequestMethod.GET)//๋ฉ์๋ ๋จ๊ณ์ url ๋งตํ
public ModelAndView main1(HttpServletRequest request, HttpServletResponse response)
throws Exception{
ModelAndView mv = new ModelAndView();
mv.addObject("msg", "main1");
mv.setViewName("main");
return mv;
}
@RequestMapping(value="/main2.do", method = RequestMethod.POST)
public ModelAndView main2(HttpServletRequest request, HttpServletResponse response, MultipartHttpServletRequest mRequest)
throws Exception{
ModelAndView mv = new ModelAndView();
mv.addObject("msg", "main2");
mv.setViewName("main");
return mv;
}
}
ํ์ผ ์ฒจ๋ถ๊ฐ ์์ ๊ฒฝ์ฐ ๋ฐ๋์ Controller์ ์ธ์๋ก MultipartHttpServletRequest ๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ ํฉ๋๋ค. ํ์ผ์ฒจ๋ถ๊ฐ ์๋ ๋ฐ ๋ง์ฝ MultipartHttpServletRequest๊ฐ ์์ ๊ฒฝ์ฐ ๋งตํ์ ๋ชปํฉ๋๋ค.
# ์คํ
ํ์ผ ์ ํ์ ๋๋ฌ ํ์ผ์ ์ฒจ๋ถํด์ค ๋ค์ ์ ์ถํ๊ธฐ ๋ฒํผ์ ๋๋ฌ์ค๋๋ค.
ํ์ผ ์ฒจ๋ถ๋ฅผ ํ ํ ๋ค์๊ณผ ๊ฐ์ด ์ฝ์์ ์ฐ์ด๋ณด๊ฒ ์ต๋๋ค.
๋ณด์๋ฉด formData์ ๋ถ๋ช file์ ๋ด์๋๋ฐ ์ฝ์์๋ ์๋ ๊ฐ์ผ๋ก ๋์ต๋๋ค. ์ด๊ฒ์ ๋ณด์์ ์ฝ์์ ์ฐํ์ง ์๋๋ค๊ณ ํ๋ ์ฝ์์ ๊ฐ์ด ๋์ค์ง ์๋๋ผ๋ ๋นํฉํ์๋ฉด ์๋ฉ๋๋ค.
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์ด์์ ํ์ผ์ ์ฒจ๋ถํ๊ณ ํด๋น url๋ก ํต์ ์ ๋ณด๋ด๋ณด๊ฒ ์ต๋๋ค.
mRequest์ ํ์ผ์ด ์ ๋ด๊ธด ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ง๋ฌธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค.
"๋ ๋ฐ๋์ ๋ฐฑ์๋ ์์ด ๋ ๊ฑฐ์ผ"
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] @RestController ๋? (0) | 2021.01.18 |
---|---|
Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest] ์๋ฌ (0) | 2021.01.18 |
[Spring] Dispatcher-Servlet์ด๋? (0) | 2021.01.17 |
[Spring] ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋? (0) | 2021.01.17 |
[Spring] ์คํ๋ง์์ ํ๊ฒฝ ๋ณ์ ์ฌ์ฉํ๊ธฐ (0) | 2021.01.14 |