Hyper ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ณผ์ ์ค ์ด๋ ค์ํ๋ ํ์ผ ์ ๋ก๋์ ๋ํด์ ๋ค์ ๊ณต๋ถํ๊ฒ ๋์๋ค.
commons-fileupload๋ฅผ ์ฌ์ฉํ์๊ณ pom.xml์ ์ถ๊ฐํด์ค์ผ ํ๋ค.
Ajax๋ก ๊ตฌํํด์ผ ํ๋ Controller์ @ResponseBody๋ฅผ ๋ถ์ฌ์ค์ผ ํ๋ค ์ด๊ฑฐ ๋ํ ์ฌ์ฉํ๋ ค๋ฉด
pom.xml์ jackson-mapper๋ฅผ ์ถ๊ฐํด์ค์ผ ํ๋ค.
pom.xml์ ์ถ๊ฐํด์ผ ํ ๊ฒ. (mvnrepository.com)
1. commons-fileupload
2. jackson-mapper
์ ์ผ ๋จผ์ ํ์ผ ์ ๋ก๋๋ฅผ ๊ตฌํ ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ๊ฒ ๋ค.
1. spring ํด๋์์ xxx-context.xml ์ ํ์ผ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ง์ ํด์ค์ผ ํ๋ค.
<!-- MultipartResolver ์ค์ -->
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="2000000" /><!-- 2MB -->
<beans:property name="maxInMemorySize" value="2000000" />
<beans:property name="defaultEncoding" value="UTF-8">
</beans:property>
</beans:bean>
+ application / servlet -context์ ์ฐจ์ด
์ด ๋ ํ์ผ์ ์ฐจ์ด๋ applciationContext๋ ์ ์ฒด ๊ณ์ธต๊ตฌ์กฐ์์ ์ต์๋จ์ ์์นํ ์ปจํ ์คํธ๋ก
DB ์ฐ๊ฒฐ, ๋ก๊น ๋ฑ์ ์ด์ฉํ๋ค.
servlet-context๋ ์๋ธ๋ฆฟ์์๋ง ์ด์ฉ๋๋ ์ปจํ ์คํธ์ด๋ค.
๋ ๊ฐ์ ์ฐจ์ด์ ์ค์!
2. jspํ์ผ์ ๋ง๋ค์ด์ค๋ค
id๊ฐ preView์ธ div๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ๋ณด์ฌ์ค ๊ณต๊ฐ์ด๊ณ
input์ ์์๋ฅผ type=file๋ก ํด์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ค.
3. ๊ทธ๋ฆฌ๊ณ controller์์ ํ์ผ์ ๋ฐ๊ธฐ ์ํด MultipartHttpServletRequest ์ธํฐํ์ด์ค๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ค์ผ ํ๋ค.
์ถ๊ฐ๋ก, Ajax๋ฅผ ์ด์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ @ResponseBody๋ ํ์๋ค. ์ด ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด view๋ฅผ ์์ฑํ๋ ๊ฒ ์๋๋ผ
JSON์ด๋ Object๋ก ๋ฐํํด์ค๋ค.
4. ํ์ผ ํ์ธ
์ฐ์ getFile๋ก ์๋ฒ์ ์ ๋ก๋๋ ํ์ผ์ ์ ๋ณด๋ฅผ ๊ฐ์ฒด๋ก ๋ณํํด์ค๋ค.
MultipartFile file = mtf.getFile("file");
ํ์ผ์ด ๋น์ด์๋์ง ํ์ธํ๋ ๋ฉ์๋ ์ฌ์ฉํด์ฃผ๊ณ
boolean isc = file.isEmpty();
ํ์ผ์ด ์์ ๋๋ ์์ ๊ฐ์ผ๋ก ์ ๋ก๋ํด์ค๋ค.
if(isc==true) {
File_Dto fDTO = new File_Dto(user_seq,"","",0);
isk = fService.imageUp(fDTO);
}else {
5. ํ์ผ ์ ๋ก๋
ํ์ผ์ด ์์ ๊ฒฝ์ฐ
}else {
String oriName = file.getOriginalFilename();
long fileSize = file.getSize();
String ext = oriName.substring(oriName.lastIndexOf("."));
String stoName = UUID.randomUUID()+ext;
String filePath = mtf.getSession().getServletContext().getRealPath("/upload");
File dir = new File(filePath);
if(!dir.exists()) {
dir.mkdirs();
}
file.transferTo(new File(filePath,stoName));
logger.info("๊ฒฝ๋ก : "+filePath+"/"+stoName);
File_Dto fDTO = new File_Dto(user_seq,oriName,stoName,fileSize);
isk = fService.imageUp(fDTO);
map.put("path", filePath+"/"+stoName);
}
map.put("isk", isk+"");
return map;
file.getOriginalFilename() : ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ก๋ํ ํ์ผ ์๋ณธ ์ด๋ฆ
getSize() : ํ์ผ์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ง๊ณ ์จ๋ค.
filePath = getSession().getServletContext().getRealPath().getContextPath("/upload")
ํ์ผ ์ ๋ก๋ ์ ํ๋ก์ ํธ ๋ด๋ถ ํด๋๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์ ์๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Servers์์ server.xml์ ๋งจ ๋ฐ ๋ถ๋ถ์ ๋ณด๋ฉด
<Context docBase="์ค์ ์ ์ฅ๋๋ ํ์ผ์ ์์น๊ฒฝ๋ก" path="์๋ฒ์์ ์ฐพ๋ ํ์ผ์ ๊ฒฝ๋ก" reloadreloadable="true"/>๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
์)
<Context docBase="C:\Users\aejeong\Programming\workspace\org.eclipse.wst.server.core\temp0\wtpwebapps\Hyper\upload" path="/Hyper/upload" reloadreloadable="true" />
์ด๋ฐ ์์ผ๋ก ์ค์ ์ ํด๋์ผ๋ฉด /Hpyer/upload ๋ผ๋ ๊ฒฝ๋ก๋ฅผ docBase์ ์ค์ ํ ๊ฒฝ๋ก์์ ์ฐพ๊ฒ ๋๋ค.
dir.mkdirs() ํด๋๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๋ฉ์๋
transferTo ์ํ๋ ์์น์ ์ ์ฅํด์ค๋ค. InputStream์ ์ฌ์ฉํด๋ ๋์ง๋ง ํธํ๋๊น ์ด๊ฒ์ ์ฌ์ฉํ๋ค.
6. Ajax ์ฌ์ฉ
function ajaxFileUpload() {
var form = jQuery("#fileForm")[0];
var formData = new FormData(form);
jQuery.ajax({
url : "./imageIn"
, type : "POST"
, processData : false
, contentType : false
, data : formData
, success:function(map) {
}
});
}
processData : ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ์ง์ ๋ํ ๊ฐ true=์ผ๋ฐ๋ฌธ์/ false=๋ฐ์ดํฐ๊ฐ์ฒด
contextType : ์ผ๋ฐ text์ธ์ง ๊ตฌ๋ถํ๋ ๊ฐ true์ด๋ฉด ์ผ๋ฐ ํ ์คํธ๋ก ๊ตฌ๋ถ๋๋ค.
data : var formData = new FormData(form)์์์ ๋ณ์๋ช ์ ์จ์ฃผ๋ฉด ๋๋ค.
ํ์ผ ์ ๋ก๋๋ ์์ฑ! ๋ค์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ ์์ ์ ๋๋ค!
'๐ WEB > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring ์ด์ ๋ฆฌ 2.Spring 3๋ ์๋์๋ฆฌ (0) | 2020.06.06 |
---|---|
Spring ์ด์ ๋ฆฌ 1.Spring์ ๊ธฐ๋ฐ์ด ๋๋ Servlet (0) | 2020.06.06 |
์ธ์ ์ ์ฅ์ (0) | 2020.04.29 |
Spring Security , OAuth2.0์ผ๋ก ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๊ตฌํ 1 (0) | 2020.04.15 |
JPA Auditing ์ผ๋ก ์์ฑ/์์ ์๊ฐ ์๋ํํ๊ธฐ (0) | 2020.04.14 |