| * °Á¸¦ ½ÃÀÛÇϱâÀü¿¡....
- ±âÁ¸ÀÇ jspSmartUpload¸¦ ´ëÃ¼ÇØ °¡°í ÀÖ´Â MultipartRequest¿¡ ´ëÇÑ °£´ÜÇÑ »ç¿ë¹ý¿¡ ´ëÇØ °ÀÇ ÇÕ´Ï´Ù. JSP¸¸À» »ç¿ëÇÏ´Â °ÁÂÀ̸ç Beans, ServletÀº ´Ù·çÁö ¾Ê½À´Ï´Ù.
- MultipartRequest´Â COS ÆÐŰÁö¿¡ Æ÷ÇԵǾî ÀÖ´Â ÆÄÀÏ ¾÷·Îµå ÄÄÆ÷³ÍÆ® ÀÔ´Ï´Ù.
- COS ¿¡¼´Â Çѱ۵î(non-Latin-1)ÀÇ ¾ð¾î¸¦ Áö¿øÇÏÁö ¾Ê¾Ò¾ú½À´Ï´Ù. ±×·¯ÇÑ ÀÌÀ¯·Î À̾ƽº(ÀÌâ½Å)´Ô ²²¼ ¹èÆ÷ÇÑ COSI(COS International) ¸¦ ÁÖ·Î »ç¿ë ÇÏ¿´À¸³ª, À̾ƽº´ÔÀÇ ³ë·Â¿¡ ÈûÀÔ¾î 2002³â 5¿ù 9ÀÏ ÀÚ COS¿¡¼´Â ÇѱÛÀ» Æ÷ÇÔÇÑ non-Latin-1 °è¿ÀÇ ¾ð¾î¸¦ Áö¿øÇÏ°Ô µÇ¾ú½À´Ï´Ù. ±Ù 2³â°£ÀÇ ±¹Á¦È¸¦ À§ÇÑ ÅõÀïÀÌ ºñ·Î¼ °á½ÇÀ» ¸Î´Â ¼ø°£À̾ú½À´Ï´Ù. ÀÌ¿¡ µû¶ó º» °ÁÂÀÇ ³»¿ëµµ COS ¸ÂÃß¾î ¾à°£ÀÇ ¼öÁ¤À» Çß½À´Ï´Ù.
COS °ø½Ä »çÀÌÆ® : http://www.servlets.com/cos/index.html
* MultipartRequest´Â....
ÇÊÀÚ´Â ±âÁ¸¿¡ jspSmartUpload¸¦ ÁÖ·Î »ç¿ëÇÏ¿© ¾÷·Îµå¸¦ ±¸ÇöÇß¾ú´Ù. ÇÏÁö¸¸ jspSmartUpload´Â ·ÎÁ÷ÀÚü¿¡ »ó´çÇÑ ¹®Á¦Á¡(¾÷·ÎµåµÈ ÆÄÀÏÀ» ¸Þ¸ð¸®¿¡ ¿Ã¸®°í ÀÛ¾÷ÇÏ¿© ±×·ÎÀÎÇØ ÆÄ»ýµÇ´Â ¹®Á¦Á¡µé)ÀÌ ÀÖÀ½ÀÌ ¹àÇô Á³°í, ±×·ÎÀÎÇØ jspSmartUploadÀÇ »ç¿ëÀº ±Þ¼ÓÈ÷ ÁÙ¾î µé¾ú´Ù.
»ç½Ç jspSmartUpload¿¡¼´Â Æí¸®ÇÑ ¸¹Àº ¸Þ¼Òµå¸¦ Áö¿øÇØÁÖ°í ÀÖ¾î MultipartRequest¸¦ »ç¿ëÇÏ´Â°Í º¸´Ù ÈξÀ ½±°Ô ¿øÇÏ´Â ±â´ÉÀ» ±¸Çö ÇÒ¼ö ÀÖ´Â °ÍÀÌ »ç½ÇÀÌ´Ù. ÇÏÁö¸¸ jspSmartUpload´Â ¹®Á¦Á¡ÀÌ ¹ß°ß µÇ¾úÀ¸¹Ç·Î °¡´ÉÇÑ»ç¿ëÀ» ÀÚÁ¦ÇÏ´Â °ÍÀÌ ÁÁ°Ú´Ù.
MultipartRequest´Â ¾ÆÁÖ °£´ÜÇÑ ¸Þ¼Òµå¸¦ ¸î°³ Áö¿øÇÑ´Ù. ÇÏÁö¸¸ ÀÌ ¸Þ¼Òµåµé ¸¸À¸·Îµµ ¿Ø¸¸ÇÑ ±â´ÉÀº ÀüºÎ ±¸ÇöÀÌ °¡´ÉÇÏ´Ï ½Ç¸ÁÇÏÁö ¸»ÀÚ. getFile() ¸Þ¼Òµå¸¦ ÀÌ¿ëÇϸé java.io.File °´Ã¼¸¦ ¾ò¾î ³¾¼ö ÀÖÀ¸´Ï À̸¦ ÀÌ¿ëÇÏ¸é µÉ°ÍÀÌ´Ù.
* ¼³Ä¡Çϱâ
MultipartRequest´Â oreilly¿¡¼ ¹èÆ÷Çϸç, http://www.servlets.com/cos/index.html¿¡¼ ´Ù¿î·Îµå ¹Þ¾Æµµ µÇ°í, ÇÊÀÚÀÇ È¨ÆäÀÌÁö(http://aboutjsp.com)ÀÇ ÀÚ·á½Ç¿¡µµ ¾÷·Îµå¸¦ ÇØ³õ¾ÒÀ¸´Ï ´Ù¿î¹Þ¾Æ »ç¿ëÇØ º¸±â ¹Ù¶õ´Ù.
¼³Ä¡ ÇÏ´Â ¹æ¹ýÀº ´Ù¿î·Îµå ¹Þ¾Æ¼ ¾ÐÃàÀ» ǬµÚ, classes µð·ºÅ丮 ¾Æ·¡¸¦ ÅèĹÀÇ classes µð·ºÅ丮¿¡ Åë°·Î º¹»çÇÑ´Ù. (¿¹.ROOT/WEB-INF/classes) ȤÀº cos.jar¸¦ lib¿¡ º¹»çÇØµµ µÈ´Ù.
COS ÆÐŰÁö±â¿¡´Â MultipartRequest ¸»°íµµ À¯¿ëÇÑ ¸¹Àº Ŭ·¡½ºµéÀÌ ¸¹ÀÌ Á¸ÀçÇϹǷÎ, ¿©±âÀÇ API¹®¼¸¦ Âü°íÇÏ¿© »ç¿ëÇϱ⠹ٶõ´Ù
* ¾÷·Îµå ±¸Çö
°£´ÜÇÑ ¿¹Á¦¸¦ ÅëÇØ¼ ¾Ë¾Æ º¸µµ·Ï ÇÏÀÚ.
| up.jsp |
<%@ page contentType="text/html;charset=UTF-8"
%><%@ page import="com.oreilly.servlet.MultipartRequest,
com.oreilly.servlet.multipart.DefaultFileRenamePolicy,
java.util.*"
%><%
String savePath="/usr/local/tomcat/webapps/ROOT/test/upload"; // ÀúÀåÇÒ µð·ºÅ丮 (Àý´ë°æ·Î)
int sizeLimit = 5 * 1024 * 1024 ; // 5¸Þ°¡±îÁö Á¦ÇÑ ³Ñ¾î¼¸é ¿¹¿Ü¹ß»ý
try{
MultipartRequest multi=new MultipartRequest(request, savePath, sizeLimit, new DefaultFileRenamePolicy());
Enumeration formNames=multi.getFileNames(); // ÆûÀÇ À̸§ ¹Ýȯ
String formName=(String)formNames.nextElement(); // ÀÚ·á°¡ ¸¹À» °æ¿ì¿£ while ¹®À» »ç¿ë
String fileName=multi.getFilesystemName(formName); // ÆÄÀÏÀÇ À̸§ ¾ò±â
if(fileName == null) { // ÆÄÀÏÀÌ ¾÷·Îµå µÇÁö ¾Ê¾ÒÀ»¶§
out.print("ÆÄÀÏ ¾÷·Îµå µÇÁö ¾Ê¾ÒÀ½");
} else { // ÆÄÀÏÀÌ ¾÷·Îµå µÇ¾úÀ»¶§
fileName=new String(fileName.getBytes("8859_1"),"UTF-8"); // ÇѱÛÀÎÄÚµù - ºê¶ó¿ìÁ®¿¡ Ãâ·Â
out.print("User Name : " + multi.getParameter("userName") + "<BR>");
out.print("Form Name : " + formName + "<BR>");
out.print("File Name : " + fileName);
} // end if
} catch(Exception e) {
out.print("¿¹¿Ü »óȲ ¹ß»ý..! ");
}
%>
|
À§ÀÇ ¿¹Á¦ ¼Ò½º¸¦ º¸¸é ´ëºÎºÐÀÌ ÀÌÇØ°¡ Àß °¥°ÍÀ̶ó »ý°¢µÇÁö¸¸.. Çϳª¾¿ »ìÆì º¸µµ·Ï ÇϰڴÙ. ¿ì¼± write.htm ¿¡¼´Â Æû¿¡¼ method="post" Çü½ÄÀ¸·Î ÇØ¾ß Çϸç ecntype="multipart/form-data" ¸¦ ²À ºÙ¿© ÁÖ¾î¾ß ÇÑ´Ù.
´ÙÀ½À¸·Î up.jsp¸¦ Çϳª Çϳª »ìÆì º¸ÀÚ. MultipartRequest Ŭ·¡½º¸¦ import Çϰí, java.util.* ´ÂEnumeration °´Ã¼¸¦ »ç¿ëÇϱâ À§Çؼ import ÇÑ´Ù..
savePath ´Â ÀúÀåµÉ ½ÇÁ¦ µð·ºÅ丮(½Ã½ºÅÛ»óÀÇ Àý´ë °æ·Î)¸¦ ÀûÀ¸¸é µÈ´Ù. sizeLimit ¿¡¼´Â Á¦ÇÑ ¿ë·®À» ¼ÂÆÃÇϴµ¥, À§¿Í°°Àº¹æ¹ýÀ¸·Î ¸Þ°¡¹ÙÀÌÆ® ´ÜÀ§·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
±× ´ÙÀ½ÁÙ¿¡¼´Â MultipartRequest °´Ã¼°¡ »ý¼ºµÊ°ú µ¿½Ã¿¡ ¾÷·Îµå°¡ ÀÌ·ç¾îÁ® ÁöÁ¤ÇÑ µð·ºÅ丮¿¡ ÀúÀåµÈ´Ù. À̶§ MultipartRequestÀÇ ¿©·¯ »ý¼ºÀÚµéÁß Çϳª¸¦ ÀÌ¿ëÇÏ¸é µÇ´Âµ¥, ±âÁ¸¿¡´Â »õ¼ºÀÚ·Î ÇÑ±Û "UTF-8"À» Áá¾î¾ß Çߴµ¥, ¾î¾ÀÏÀÎÁö ÀÌÁ¦´Â ÁÖÁö ¾Ê¾Æ¾Æ ÇÑ±Û À̸§ÀÇ ÆÄÀÏÀÌ Àß ÀúÀåµÇ´À´Â °ÍÀ» º¼¼ö ÀÖ´Ù. ¶ÇÇÑ °¡Àå ¿À¸¥ÂÊÀÇ 'new DefaultFileRenamePolicy' ´Â ´Â ÆÄÀÏ À̸§ Áߺ¹Ã³¸®¿¡ °üÇÑ °ÍÀ¸·Î ³ÖÀ»¼öµµ ÀÖ°í, »¬¼öµµ ÀÖ´Ù. ÇÊ¿äÇÏÁö ¾Ê´Ù°í »ý°¢µÈ´Ù¸é »©¹ö¸®µµ·Ï ÇÏÀÚ.
±×¾Æ·¡¿¡ if ¹®À» º¸¸é, ÆÄÀÏÀÌ ¾÷·Îµå µÇ¾úÀ»¶§¿Í ¾÷·Îµå µÇÁö ¾Ê¾ÒÀ»¶§ÀÇ Ã³¸®¸¦ ³ª´©¾î¼ ÇÒ¼ö ÀÖµµ·Ï Çϰí ÀÖ´Ù.
if ¹® À§ÀÇ 3¶óÀÎÀº ÆÄÀÏÀÇ À̸§À» ¾ò±âÀ§ÇÑ ·ÎÁ÷À¸·Î Enumeration °´Ã¼·Î ¹ÞÀº ÆûÀÇ À̸§À» ÀÌ¿ëÇϰí ÀÖ´Ù. ¸¸¾à ÆûÀÌ ¿©·¯°³°¡ ÀÖÀ» °æ¿ì¿£ ÀûÀýÇÑ ÀÚ·áÇüÀ» ÀÌ¿ëÇÏ¿© ÆûÀÇ À̸§À» ÅëÇØ¼ ÆÄÀÏÀÇ À̸§µéÀ» ¾ò¾î ³¾¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸¸¾à ÆÄÀÏ ¾÷·Îµå¸¦ Beans·Î ±¸ÇöÇÒ °æ¿ì¿£ ¹Ýµå½Ã ÀÌ·¯ÇÑ ·ÎÁ÷À»(Enumeration °´Ã¼¸¦ ÀÌ¿ëÇÑ loop±¸¹®)»ç¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù.
»ç½Ç À§ÀÇ ¿¹Á¦¿¡¼´Â ±»ÀÌ Enumerration °´Ã¼¸¦ °¡Áö°í ±¸ÇöÇÒ ÇÊ¿ä´Â ¾øÁö¸¸, ÇØ´ç ¸Þ¼ÒµåÀÇ »ç¿ë¹ýÀ» º¸¿©ÁÖ±â À§Çؼ »ç¿ëÇÏ¿´´Ù. ÀÌ·¯ÇÑ ¹æ¹ýÀ» »ç¿ëÇÏÁö ¾ÊÀ» °æ¿ì¿¡´Â if À§¿¡ 3¶óÀÎÀ» »èÁ¦ÇÏ°í ¾Æ·¡ÀÇ ³»¿ëÀ» Ãß°¡ Çϸé´Ù.
String fileName=multi.getFilesystemName("upfile");
* FileRenamePolicy ¿¡ °üÇØ¼...
À̹ø ¹öÁ¯ÀÇ MultipartRequest ¿¡¼ ºÎÅÍ´Â ÆÄÀÏ Áߺ¹Ã³¸® ÀÎÅÍÆäÀ̽º°¡ Ãß°¡ µÇ¾ú°í, À§ÀÇ ¿¹Á¦ ¼Ò½º´Â ±×·¯ÇÑ ³»¿ëÀÌ ¹Ý¿µµÇ¾îÀÖ´Ù. DefaultFileRenamePolicy´Â FileRenamePolicy Interface ¸¦ ±¸ÇöÇÑ °ÍÀ¸·Î, Áߺ¹µÈ ÆÄÀÏ À̸§µÚ¿¡ ¼ýÀÚ¸¦ ºÙ¿© ÁÖ°í ÀÖ´Ù. ( abcd.zip , abcd1.zip, abcd2.zip, abcd3.zip ....... )
DefaultFileRenamePolicy Class¸¦ ¹ÙÅÁÀ¸·Î »õ·Î¿î RenamePolicy class ¸¦ ¸¸µé¸é ÀÚ½ÅÀÌ ¿øÇÏ´Â FileRenamePolicy ¸¦ Àû¿ëÇÒ¼ö ÀÖ´Ù.
¶ÇÇÑ getFilesystemName()¸Þ¼Òµå¸¦ ÀÌ¿ëÇÏ¿© º¯°æµÈ ÆÄÀÏ À̸§À» ¾òÀ»¼ö ÀÖ°í, getOriginalFileName()¸Þ¼Òµå´Â º¯°æµÇ±â ÀÌÀüÀÇ ÆÄÀÏÀ̸§À» ³Ñ°ÜÁØ´Ù.
* multi.getParameter()
write.htm ¿¡¼ ¼Á¤ÇÑ¹Ù¿Í °°ÀÌ enctype="multipart/form-data" ·Î ÁöÁ¤Çϸé, request.getParameter()·Î´Â ¾Æ¹«·¯ °ªµµ ¹Þ¾Æ ¿Ã¼ö°¡ ¾ø°ÔµÈ´Ù. ±×·¯ÇÑ ÀÌÀ¯·Î ´ëºÎºÐÀÇ ÆÄÀϾ÷·Îµå ÄÄÆ÷³ÍÆ®¿¡¼´Â getParameter() ¸Þ¼Òµå¸¦ Áö¿øÇϴµ¥, MultipartRequest¿¡¼µµ ÀÌ·¯ÇÑ ¸Þ¼Òµå¸¦ Áö¿øÇÑ´Ù. Áö¿øÇÏ´Â ¸Þ¼Òµå´Â ¾Æ·¡¿Í °°À¸¸ç, »ç¿ë¹ýÀº request.getParameter() µî°ú µ¿ÀÏÇÏ´Ù.
String getParameter(String name) Enumeration getParameterNames() String[] getParameterValues(String name)
* Çѱ۰ü·Ã ¹®Á¦ 󸮹ý
MultipartRequest multi=new MultipartRequest(request, savePath, sizeLimit, new DefaultFileRenamePolicy());
À§¸¦ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÑ´Ù.
MultipartRequest multi=new MultipartRequest(request, savePath, sizeLimit, "UTF-8", new DefaultFileRenamePolicy());
"UTF-8" ºÎºÐ¿£ "ksc5601", "ms949" µî ÀÚ½ÅÀÇ È¯°æ¿¡ ¾Ë¸Â´Â ij¸¯ÅͼÂÀ» ³Ö¾î ÁÖ¸é µÈ´Ù.
°¢ ¸Þ¼Òµåµé¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ »ç¿ë¹ýÀº ¾Æ·¡ÀÇ API¹®¼¸¦ Âü°í Çϱ⠹ٶõ´Ù.
http://aboutjsp.com/docs/cos/
|