ÆÄÀÏ ´Ù¿î·ÎµåÇÒ¶§ ÆÄÀÏÀ̸§ ¿ø·¡ À̸§À¸·Î ¹Ù²Ù±â
ÆÄÀÏÀ» ¾÷·Îµå ÇÏ°í ´Ù¿î·Îµå ¹Þ´Â °úÁ¤¿¡¼ ÀúÀå¼Ò¿¡ µ¿ÀÏÇÑ ÆÄÀÏÀ̸§À» °¡Áø ÆÄÀÏÀ» ¾÷µ¥ÀÌÆ® ÇÏ°Ô µÇ¸é ÀúÀåµÇ´Â ÆÄÀÏÀÇ
À̸§À» ¹Ù²Ù¾î ÁÖ¾î¾ß ÇÑ´Ù.
µ¿ÀÏÇÑ À̸§ÀÌ ÀÖÀ»¶§¸¶´Ù ÆÄÀÏ¸í µÚ¿¡ Ä«¿îÆ®¼ýÀÚ¸¦ ´Þ¾Æ ÁÖ´Â ¹æ¹ýÀ» »ç¿ëÇѴٰųª
UUID °°Àº °ÍÀ» ÆÄÀϸíÀ¸·Î ¹Ù²Ù°í ÀúÀåÇѴٰųª ³¯Â¥¼øÀ¸·Î ÀúÀåÇϴµîÀÇ ¿©·¯°¡Áö ¹æ¹ýµéÀÌ ÀÖ´Ù.
±×·¸´Ù¸é ´Ù¿î ¹ÞÀ»¶§´Â ÆÄÀϸíÀÌ uuid³ª ÀÏ¹Ý »ç¿ëÀÚ°¡ ¾Ë¾Æº¸±â Èûµç ÆÄÀϸíÀ» »ç¿ëÇÏ¸é ¾ÈµÇ±â ¶§¹®¿¡
´Ù¿î·Îµå ¹ÞÀ»¶§´Â ´Ù½Ã ¿ø·¡ ÆÄÀϸíÀ¸·Î ´Ù¿î ¹Þµµ·Ï ÇØÁÖ¾î¾ß ÇÑ´Ù.
±×·¸±â À§Çؼ´Â ÆÄÀϾ÷·Îµå¿Í ÇÔ²² DB¿¡ ÇØ´ç ÆÄÀÏÀÇ À̸§À̳ª À̸§ÀÌ Æ÷ÇÔµÈ °æ·Î¸¦ ³ÖÀ¸¸ç ½ÇÁ¦ÀúÀåµÇ´Â º¯°æµÈ ÆÄÀÏÀ̸§°ú ¿øº»ÆÄÀÏÀÇ À̸§ µÎ°¡Áö¸¦ ³Ö¾î ÁÖ¾î¾ß ÇÑ´Ù.
¹®Á¦´Â ¿©±â¼ ¹ß»ýÇÑ´Ù. ÈçÈ÷ ³ª¿ÍÀÖ´Â ÆÄÀÏ ¾÷/´Ù¿î·Îµå ·ÎÁ÷À̳ª ÀüÀÚÁ¤ºÎ ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏ´Ùº¸¸é ÆÄÀÏÀ» ´Ù¿î¹ÞÀ»¶§ ½ÇÁ¦ ÀúÀåµÈ ÆÄÀÏÀ̸§¸¸ °¡Á®¿Í¼ ´Ù¿î·Îµå ¹Þ´Â ·ÎÁ÷À¸·Î Â¥¿©Á® ÀÖ°í ´Ü¼øÈ÷ º¹»çÇؼ ºÙ¿©³Ö±â¸¦ ÇÏ´Â ¹æ¹ýÀ¸·Î »ç¿ëÇÏ´Ï ´Ù¿î¹ÞÀ»¶§ µðºñ¿¡¼ À̸§µÎ°¡Áö¸¦ °¡Áö°í ¿À°í ³ª¼ ÀÌÈÄ¿¡ ¾î¶»°Ô ÇØ¾ß ÇÒÁö ¸ð¸£´Â °æ¿ì°¡ »ý±ä´Ù.
´ëÇ¥ÀûÀ¸·Î ÄÁÆ®·Ñ·¯¿¡¼
return new ModelAndView("download", "downloadFile", file);
ÀÌ·¸°Ô ¸®ÅÏ°ªÀ» modelAndView·Î »ç¿ëÇÏ´Â ¹æ¹ý¿¡¼ ½ÇÁ¦ÀúÀåµÈ ÆÄÀϸíÀ» ¹Ù²ã¼ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ.
ÀÏ´Ü ¸®ÅϵǴ ModelAndView("download", "downloadFile", file) ¿©±â¼
'download'´Â dispatcher-servlet.xml ¿¡¼ ÁöÁ¤µÇ´Â °ªÀ¸·Î. µð½ºÆÐÃÄ ÆÄÀÏÀ» ¿°í³ª¼ downloadÀ» °Ë»öÇØ º¸¸é
<bean id="download" class="egovframework.XXXXXXXX.XXXXXXX.XXXXXXXX.DownloadView" />
¿Í °°Àº Çü½ÄÀ¸·Î ¾²¿© ÀÖÀ» °ÍÀÌ´Ù. 'download'¶ó´Â ¿äûÀ» ¹ÞÀ¸¸é ÇØ´ç Ŭ·¡½º¸¦ ½ÇÇàÇÏ°Ú´Ù´Â Áß°£ÀÇ XXXÇ¥´Â ÆÐÅ°Áö °æ·ÎÀÌ´Ù.
DownloadView Ŭ·¡½º¸¦ ¿¾î º¸¸é
File file = (File) model.get("downloadFile"); <- ÀÌ·±½ÄÀ¸·Î modelAndViewÀÇ µÎ¹ø° ÀÎÀÚ¸¦ ºÒ·¯¿À¸ç °á°ú´Â downloadFileµÚ¿¡ ¾²¿©Áø fileÀÌ µÈ´Ù.
¾Æ·¡·Î Á» ³»·Áº¸¸é
fileName = URLEncoder.encode(file.getName(),"UTF-8").replaceAll("\\+", "%20");
ÀÌ·±½ÄÀ¸·Î ÇØ´ç ÆÄÀÏÀÇ À̸§À» ²¨³»¼
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ";");
ÀÌ·¸°Ô ÆÄÀÏÀ̸§À» ¼ÂÆÃÀ» Çϴµ¥
¿©±â¼ ¼ÂÆõǴ fileName¸¸ ¿ø·¡ ÆÄÀÏÀ̸§À¸·Î ¹Ù²ãÁÖ¸é µÇ´Â °ÍÀÌ´Ù.
ÀÌÁ¦ºÎÅÍ ¾î¶»°Ô ÇØ¾ß ÇÏ´ÂÁö ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ
¿ì¼± ´Ù¿î·Îµå URLÀÌ ¾î³ëÅ×ÀÌ¼Ç µÇ¾î ÀÖ´Â ÄÁÆ®·Ñ·¯¿¡¼
¸®ÅϵǴ °ªÀ» return new ModelAndView("download", "downloadFile", file); °¡ ÀÖ´Â ÄÁÆ®·Ñ·¯¸¦
fileName = new String(fileName.getBytes("iso-8859-1"), "UTF-8"); // ÆÄÀÏÀ̸§ ±úÁö´Ï±î ÀÎÄÚµù
realName = new String(realName.getBytes("iso-8859-1"), "UTF-8");
//propertiesService.getString("Globals.FmsFilePath")´Â ¹Ì¸® ÁöÁ¤ÇسõÀº °æ·Î´Ï±î ±×³É ÆÄÀÏ°æ·Î¶ó°í »ý°¢ÇÏ¸é µÊ
String fullPath = propertiesService.getString("Globals.FmsFilePath") + "\\°æ·Î\\" + fileName;
File file = new File(fullPath); // ½ÇÁ¦ ÆÄÀÏ °æ·Î¸¦ ÁöÁ¤ÇØ »ý¼ºÇÑ ÆÄÀÏ
File file2 = new File(realName); // ¹Ù²Ü ÆÄÀÏÀ̸§¸¸ ³Ö¾î³õÀº ÆÄÀÏ realNameÀº String°ªÀÌ´Ù.
ModelAndView mav = new ModelAndView();
mav.setViewName("download");
mav.addObject("downloadFile", file); // ½ÇÁ¦ ÀúÀåµÈ ÆÄÀÏ
mav.addObject("realFileName", file2); //db¿¡ ÀúÀåÇØ ³õÀº ¿ø·¡ ÆÄÀÏÀ̸§
if(!file.exists()){
return null;
}
// return new ModelAndView("download", "downloadFile", file);
return mav;
ÀÌ·¸°Ô ¹Ù²Ù¾î ÁÖµµ·Ï ÇÏÀÚ.
Áï ModelAndView¿¡ µÎ°³ÀÇ ¿ÀºêÁ§Æ®¸¦ ³Ö¾î¼ ³Ñ±â´Â °ÍÀÌ´Ù.
±×¸®°í ´Ù½Ã DownloadView ·Î °¡¼
fileName = URLEncoder.encode(file.getName(),"UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ";");
À§ÀÇ Äڵ带 ¾Æ·¡¿Í °°ÀÌ ¹Ù²ãÁÖµµ·Ï ÇÏÀÚ.
File file2 = (File) model.get("realFileName");
String fileName="test";
try{
fileName = URLEncoder.encode(file2.getName(),"UTF-8").replaceAll("\\+", "%20");
}
catch(Exception e){
fileName = URLEncoder.encode(file.getName(),"UTF-8").replaceAll("\\+", "%20");
}
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ";");
ÀÌ·¸°Ô ÇÏ¸é ³¡! ¿Ï¼º! ÇØ°á!
Ãâó: http://yamea-guide.tistory.com/category/Yame Programmer/ÀüÀÚÁ¤ºÎÇÁ·¹ÀÓ¿öÅ©?page=2 [±âŸġ´Â °³¹ßÀÚÀÇ ¾ß¸Å °¡À̵å]