2020/05/16 - [WEB/Spring] - ์ด๋ฏธ์ง ์ ๋ก๋ (Spring+Ajax)
์ด๋ฏธ์ง ์ ๋ก๋ (Spring+Ajax)
Hyper ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ณผ์ ์ค ์ด๋ ค์ํ๋ ํ์ผ ์ ๋ก๋์ ๋ํด์ ๋ค์ ๊ณต๋ถํ๊ฒ ๋์๋ค. commons-fileupload๋ฅผ ์ฌ์ฉํ์๊ณ pom.xml์ ์ถ๊ฐํด์ค์ผ ํ๋ค. Ajax๋ก ๊ตฌํํด์ผ ํ๋ Controller์ @ResponseBody๋ฅผ ๋ถ.
aejeong.com
์ด์ด์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๊ตฌํํ๊ฒ ์ต๋๋ค.
var upload = document.querySelector('#file');
upload.addEventListener('change',function (e) {
var get_file = e.target.files;
var selected_file = upload.files[0];
var idxDot = selected_file.name.lastIndexOf(".") + 1;
var extFile = selected_file.name.substr(idxDot, selected_file.name.length).toLowerCase();
if (extFile == "jpg" || extFile == "jpeg" || extFile == "png" || extFile == "svg" || extFile == "gif") {
var image=document.createElement('img');
var reader = new FileReader();
reader.onload=(function(aImg){
return function(e){
aImg.src=e.target.result;
//ํ์ผ ์ฌ์ด์ฆ ์ฒดํฌ
var oriSize = upload.files[0].size/1000000;
var stopTemp = (oriSize+"").indexOf(".");
var size = (oriSize+"").substring(0,stopTemp) + (oriSize+"").substring(stopTemp,4);
if (size>2) {
alert("์ด๋ฏธ์ง ํฌ๊ธฐ : "+size+"MB\n2MB๋ณด๋ค ๋ฎ์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ ์ฌ๋ ค์ฃผ์ธ์.");
}else{
alert("์ด๋ฏธ์ง ํฌ๊ธฐ : "+size+"MB\n์ด๋ฏธ์ง๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.");
//๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ณ๊ฒฝ
preDef.style.display = 'none';
preView.style.display ='block';
preView.style.backgroundImage ='url(\"'+e.target.result+'\")';
}
}
})(image)
if(get_file){
reader.readAsDataURL(get_file[0]);
}
} else {
alert("์ด๋ฏธ์ง ํ์ผ๋ง ์
๋ก๋ ๊ฐ๋ฅํฉ๋๋ค. ex) jpg/jpeg, png, svg, gif");
}
})
์ฝ๋๋ฅผ ๋จผ์ ์ดํด๋ณด๋ฉด ์ ๋ฒ ๊ธ์์ JSP inputํ๊ทธ ์์ id๋ฅผ file๋ก ํ๋ ๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๊ฑธ์ด์ฃผ์ด์ change ์ฆ ๋ณํ๊ฐ ์๊ธธ๋ ์คํ๋๋ ํจ์์ ๋๋ค.
e.target.files ์์ files๋ ์ ํ๋ ํ์ผ์ File ๊ฐ์ฒด๋ฅผ ํฌํจํ๋ ๋ฐฐ์ด์ ๋ปํฉ๋๋ค.
Hyper์์๋ ๋ค์ค์ ๋ก๋๊ฐ ์๊ธฐ ๋๋ฌธ์ files[0] ์ผ๋ก ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด์ ์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์ต๋๋ค.
jpg,png ๋ฑ์ ํ์ฅ์๋ง์ ํ์ฉํ๊ธฐ ์ํด .name์ ํด์ ํ์ผ๋ช ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
onload๋ฅผ ์ฌ์ฉํ ๊ฑด๋ฐ ์ฆ์์คํํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก aImag๋ฅผ ๋๊ฒจ์ฃผ๋ฉด ๋ด๋ถ์์ ๋ถ๋ฌ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋๋ค.
๊ทธ๋ฆฌ๊ณ if๋ก ๋์ด๊ฐ์ file์ด ์์ ๊ฒฝ์ฐ readAsDataURL ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด DataURLํ์์ผ๋ก ์ฝ์ด ๋ค์ธ ๊ฒ์ result์์ฑ์ ๋ด๊น๋๋ค.
ํ์ผ ์ฝ์ -> if(get_file)๋ก ๋์ด๊ฐ์ URLํ์์ผ๋ก result์ ๋ด๊น ->onloadํจ์ ์คํ

'๐ WEB > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DataTable Ajax ์ฌ์ฉํ๊ธฐ (0) | 2020.05.12 |
---|---|
var, const, let (0) | 2020.03.05 |
2020/05/16 - [WEB/Spring] - ์ด๋ฏธ์ง ์ ๋ก๋ (Spring+Ajax)
์ด๋ฏธ์ง ์ ๋ก๋ (Spring+Ajax)
Hyper ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ณผ์ ์ค ์ด๋ ค์ํ๋ ํ์ผ ์ ๋ก๋์ ๋ํด์ ๋ค์ ๊ณต๋ถํ๊ฒ ๋์๋ค. commons-fileupload๋ฅผ ์ฌ์ฉํ์๊ณ pom.xml์ ์ถ๊ฐํด์ค์ผ ํ๋ค. Ajax๋ก ๊ตฌํํด์ผ ํ๋ Controller์ @ResponseBody๋ฅผ ๋ถ.
aejeong.com
์ด์ด์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๊ตฌํํ๊ฒ ์ต๋๋ค.
var upload = document.querySelector('#file');
upload.addEventListener('change',function (e) {
var get_file = e.target.files;
var selected_file = upload.files[0];
var idxDot = selected_file.name.lastIndexOf(".") + 1;
var extFile = selected_file.name.substr(idxDot, selected_file.name.length).toLowerCase();
if (extFile == "jpg" || extFile == "jpeg" || extFile == "png" || extFile == "svg" || extFile == "gif") {
var image=document.createElement('img');
var reader = new FileReader();
reader.onload=(function(aImg){
return function(e){
aImg.src=e.target.result;
//ํ์ผ ์ฌ์ด์ฆ ์ฒดํฌ
var oriSize = upload.files[0].size/1000000;
var stopTemp = (oriSize+"").indexOf(".");
var size = (oriSize+"").substring(0,stopTemp) + (oriSize+"").substring(stopTemp,4);
if (size>2) {
alert("์ด๋ฏธ์ง ํฌ๊ธฐ : "+size+"MB\n2MB๋ณด๋ค ๋ฎ์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ ์ฌ๋ ค์ฃผ์ธ์.");
}else{
alert("์ด๋ฏธ์ง ํฌ๊ธฐ : "+size+"MB\n์ด๋ฏธ์ง๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.");
//๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ณ๊ฒฝ
preDef.style.display = 'none';
preView.style.display ='block';
preView.style.backgroundImage ='url(\"'+e.target.result+'\")';
}
}
})(image)
if(get_file){
reader.readAsDataURL(get_file[0]);
}
} else {
alert("์ด๋ฏธ์ง ํ์ผ๋ง ์
๋ก๋ ๊ฐ๋ฅํฉ๋๋ค. ex) jpg/jpeg, png, svg, gif");
}
})
์ฝ๋๋ฅผ ๋จผ์ ์ดํด๋ณด๋ฉด ์ ๋ฒ ๊ธ์์ JSP inputํ๊ทธ ์์ id๋ฅผ file๋ก ํ๋ ๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๊ฑธ์ด์ฃผ์ด์ change ์ฆ ๋ณํ๊ฐ ์๊ธธ๋ ์คํ๋๋ ํจ์์ ๋๋ค.
e.target.files ์์ files๋ ์ ํ๋ ํ์ผ์ File ๊ฐ์ฒด๋ฅผ ํฌํจํ๋ ๋ฐฐ์ด์ ๋ปํฉ๋๋ค.
Hyper์์๋ ๋ค์ค์ ๋ก๋๊ฐ ์๊ธฐ ๋๋ฌธ์ files[0] ์ผ๋ก ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด์ ์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์ต๋๋ค.
jpg,png ๋ฑ์ ํ์ฅ์๋ง์ ํ์ฉํ๊ธฐ ์ํด .name์ ํด์ ํ์ผ๋ช ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
onload๋ฅผ ์ฌ์ฉํ ๊ฑด๋ฐ ์ฆ์์คํํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก aImag๋ฅผ ๋๊ฒจ์ฃผ๋ฉด ๋ด๋ถ์์ ๋ถ๋ฌ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋๋ค.
๊ทธ๋ฆฌ๊ณ if๋ก ๋์ด๊ฐ์ file์ด ์์ ๊ฒฝ์ฐ readAsDataURL ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด DataURLํ์์ผ๋ก ์ฝ์ด ๋ค์ธ ๊ฒ์ result์์ฑ์ ๋ด๊น๋๋ค.
ํ์ผ ์ฝ์ -> if(get_file)๋ก ๋์ด๊ฐ์ URLํ์์ผ๋ก result์ ๋ด๊น ->onloadํจ์ ์คํ

'๐ WEB > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DataTable Ajax ์ฌ์ฉํ๊ธฐ (0) | 2020.05.12 |
---|---|
var, const, let (0) | 2020.03.05 |