¼¹ö¿¡¼ÀÇ µ¥ÀÌÅÍ Ã³¸®Çϱâ¾×Ƽºê½ºÄù¾î°¡ Àû¿ëµÈ °Ô½ÃÆÇ¿¡¼ ÀÔ·ÂµÈ µ¥ÀÌÅÍÀÇ Ã³¸® ¹æ¹ýÀº ÀÏ¹Ý °Ô½ÃÆÇÀÇ Ã³¸® ¹æ¹ý°ú À¯»çÇÕ´Ï´Ù. ´Ù¸¸ ¾×Ƽºê½ºÄù¾î¿¡¼ ÀÛ¼ºµÈ ³»¿ë¸¸ ´Ù¸£°Ô 󸮵˴ϴÙ.
|
1 |
µ¥ÀÌÅ͸¦ Á÷Á¢ DB(¶Ç´Â ÆÄÀÏ)¿¡ ÀúÀåÇÏ´Â ¹æ¹ý |
2 |
MIME µðÄÚ´õ¸¦ ÅëÇØ µ¥ÀÌÅ͸¦ ÆÄÀϰú º»¹®À¸·Î ºÐ¸®ÇÏ¿© ÀúÀåÇÏ´Â ¹æ¹ý |
°Ô½ÃÆÇÀÇ °æ¿ì ÀÛ¼ºµÈ ºÐ¹®Àº ÅØ½ºÆ®À̹ǷΠ´Ü¼øÈ÷ HTML ű׸¦ ºÐ¸®Çϰųª Ư¼ö ±âÈ£ µîÀ» ó¸®ÇÏ¿© DB¿¡ ÀúÀåÇÕ´Ï´Ù. ¸¸¾à ÷ºÎ ÆÄÀÏÀÌ ÀÖÀ» °æ¿ì À̸¦ DB¿¡ ³ÖÀ» ¼öµµ ÀÖ°í, º°µµÀÇ ¾÷·Îµå(Upload) µð·ºÅ丮¿¡ ¸¶·ÃµÈ ±ÔÄ¢¿¡ µû¶ó ÀúÀåÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.
¾×Ƽºê½ºÄù¾î¿¡¼ ¸¸µç µ¥ÀÌÅÍ´Â ÅØ½ºÆ®, HTML, MIME ÇüÅ·Π³ª´ ¼ö ÀÖÀ¸¸ç, ±× Áß MIME ÇüŰ¡ ¾×Ƽºê½ºÄù¾îÀÇ ¸ðµç ±â´ÉÀ» Æ÷ÇÔÇϰí ÀÖ´Â °æ¿ì¶ó ÇÒ ¼ö ÀÖ½À´Ï´Ù. MIME ÇüÅ´ µ¥ÀÌÅÍ¿¡¼ ¿©·¯ °¡Áö ÇüÅÂÀÇ ÆÄÀÏ, °³Ã¼, Ç÷¡½Ã ÆÄÀϰú º»¹® HTMLÀ» °°ÀÌ Àü¼Û¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ¿Í °°ÀÌ MIME ÇüÅÂÀÇ µ¥ÀÌÅ͸¦ ¹Þ¾Æ¿Ã °æ¿ì ¾×Ƽºê½ºÄù¾î°¡ Àû¿ëµÇÁö ¾ÊÀº °Ô½ÃÆÇ¿¡¼´Â ó¸®ÇÒ ¼ö ¾ø½À´Ï´Ù.
¸¸¾à MIME ÇüÅÂÀÇ µ¥ÀÌÅ͸¦ DB¿¡ ÀúÀåÇÑ´Ù¸é, Internet ExplorerÀÇ °æ¿ì MHT ÆÄÀÏÀ» Áö¿øÇÏÁö¸¸, ¸ðµç µ¥ÀÌÅÍÀÇ ³»¿ëÀ» Internet Explorer¿¡ Àü¼ÛÇÒ ¶§ HTTP Header¿¡ MIME Message ŸÀÔÀ¸·Î ÁÙ °æ¿ì µðÄÚµù(Decoding)ÇÏ¿© Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ƯÁ¤ÇÑ Æ÷¸Ë(Format)ÀÇ ÇüÅ·Π°Ô½Ã¹°À» Ç¥ÇöÇϱâ´Â ¾î·Æ½À´Ï´Ù. ¶ÇÇÑ DB¿¡¼ º»¹®¿¡ ´ëÇÏ¿© °Ë»öÇÒ ¼ö ÀÖ´Â ¹æ¹ýµµ ¾ø½À´Ï´Ù. ¸¸¾à DB¸¦ MY-SQLÀ» »ç¿ëÇÏ´Â °æ¿ì¶ó¸é Full Text Search¸¦ ½ÇÇàÇϰųª, WhereÀýÀÇ like ±¸¹®À¸·Î °Ë»öÇϱⰡ ¾î·Æ±â ¶§¹®ÀÔ´Ï´Ù. µû¶ó¼ MIME µ¥ÀÌÅ͸¦ Á÷Á¢ DB¿¡ ÀúÀåÇϰųª, ÆÄÀÏ ÇüÅ·Πº¸°üÇÏ´Â ¹æ¹ýÀº ½Ã½ºÅÛÀÇ È¿À²À» ÁÁÁö ¾Ê°Ô ÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù.
MIME µ¥ÀÌÅ͸¦ HTML º»¹®°ú Æ÷ÇÔµÈ ÆÄÀÏÀ» ºÐ¸®ÇÏ¿© ÀúÀåÇÏ´Â ¹æ½ÄÀÌ °¡Àå ÀϹÝÀûÀ̸ç, È¿À²ÀûÀÔ´Ï´Ù. HTMLÀÇ °æ¿ìµµ DB¿¡ ÀúÀåÇÑ ÈÄ Æ÷ÇÔµÈ ÆÄÀÏÀº º°µµÀÇ µð·ºÅ丮¿¡ ÀúÀåÇÏ´Â ¹æ¹ýÀ» ±ÇÀåÇÕ´Ï´Ù. (¸¸¾à Æ÷ÇÔµÈ ÆÄÀÏÀ» DB¿¡ ³ÖÀ» °æ¿ì ¸î°¡Áö DBÀÇ ÇüÅ¿¡ µû¶ó ¿©·¯ °¡Áö ÀÛ¾÷À» ¼öÇàÇØ¾ß ÇÕ´Ï´Ù.)
¾×Ƽºê½ºÄù¾î¿¡¼ MIME Encoded Data¸¦ Internet Explorer·Î Àü´Þ¹Þ¾Æ¼ À̸¦ Form Data·Î À¥ ¼¹ö¿¡ Àü´ÞÇϸé, À¥ ¼¹ö´Â ¼¹ö»çÀÌµå ½ºÅ©¸³Æ®(Server-Side Script)¿¡¼ ºÐ¸®ÇÏ´Â ÀÛ¾÷À» ÅëÇØ¼ HTML°ú Æ÷ÇÔµÈ ÆÄÀÏ·Î ºÐ¸®ÇÕ´Ï´Ù. HTMLÀº DB¿¡ ÀúÀåµÇ°í, Æ÷ÇÔµÈ ÆÄÀÏÀº File System¿¡ ÀúÀåµË´Ï´Ù.
|
´ÙÀ½Àº °Ô½ÃÆÇ ±Û¾²±â ¼Ò½ºÀÇ ÀϺκÐÀÔ´Ï´Ù.
// ¾÷·ÎµåÇÒ À§Ä¡¿Í MIME¿¡¼ ´ëÄ¡ÇÒ LINK¸¦ ¸¸µì´Ï´Ù. uploadPath = BBS_DATA_PATH + "/" + msgno + "/"; uploadUrl = BBS_DATA_URL + "/" + msgno + "/";
makeDir = new File(uploadPath); // ¾÷·ÎµåÇÒ µð·ºÅ丮 »ý¼º makeDir.mkdir(); makeDir = null;
// ÆÄÀÏ ¾÷·Îµå Çϱâ for(i = 0; i < myUpload.getFiles().getCount(); i++) { if(!myUpload.getFiles().getFile(i).isMissing()) // ¾÷·Îµå ÇÒ ÆÄÀÏÀÌ ÀÖÀ¸¸é { outFile = new FileOutputStream(uploadPath + myUpload.getFiles().getFile(i).getFileName()); for(j = 0; j < myUpload.getFiles().getFile(i).getSize(); j++) outFile.write((int)myUpload.getFiles().getFile(i).getBinaryData(j)); outFile = null; sql = "insert into filelist ( msgno, filename ) values ( "; sql += msgno + ", "; sql += "'" + myUpload.getFiles().getFile(i).getFileName() + "') "; stmt.executeQuery(sql); } }
// »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ °Ô½Ã¹° ³»¿ë °¡Á®¿À±â String author = myUpload.getRequest().getParameter("author"); String email = myUpload.getRequest().getParameter("email"); String homepage = myUpload.getRequest().getParameter("homepage"); String subject = myUpload.getRequest().getParameter("subject"); String msgbody = myUpload.getRequest().getParameter("contents"); String passwd = myUpload.getRequest().getParameter("pass"); String mode = request.getParameter("mode");
// MIME µðÄÚµù Çϱâ NamoMime mime = new NamoMime(); mime.setSaveURL(uploadUrl); mime.setSavePath(uploadPath); mime.decode(msgbody); // MIME µðÄÚµù mime.saveFile(); // Æ÷ÇÔÇÑ ÆÄÀÏ ÀúÀåÇϱâ msgbody = replace(mime.getBodyContent(), "'", "\\'"); |
Àº ÇöÀç ÀúÀåÇÒ °Ô½Ã¹°ÀÇ ÀÏ·Ã ¹øÈ£ÀÔ´Ï´Ù. °Ô½ÃÆÇ¿¡¼´Â ÀÌ ÀÏ·Ã ¹øÈ£·Î ±¸ºÐÇÏ¿© °Ô½Ã¹°ÀÌ ÀúÀåµÉ µð·ºÅ丮¸¦ ƯÁ¤ µð·ºÅ丮 ¾Æ·¡¿¡ ¸¸µé °Ô µË´Ï´Ù. ±×¸®°í ÅØ½ºÆ®¿¡ Æ÷ÇÔµÈ ÆÄÀÏÀ» ÀÌ µð·ºÅ丮¿¡ ÀúÀåÇϰí, HTML º»¹®¿¡ Ç¥½ÃµÈ ÆÄÀÏÀÇ ¸µÅ©¸¦ ÀúÀåÇÑ ¸µÅ©·Î º¯È¯ÇÕ´Ï´Ù. ±×·¯¹Ç·Î HTML ÆÄÀÏÀ» »ç¿ëÀÚ¿¡°Ô Àü¼ÛÇÏ¿©µµ º°µµÀÇ Ã³¸®°¡ ÇÊ¿ä¾øÀÌ Æ÷ÇÔµÈ ÆÄÀÏÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
JSP¿¡¼ÀÇ MIME µðÄÚµùÀ» À§ÇØ ³ª¸ð¿¡¼ ¹èÆ÷ÇÏ´Â
ÆÐŰÁö¸¦ ÀÌ¿ëÇÕ´Ï´Ù. ÀÌ ÆÐŰÁö´Â ¾×Ƽºê½ºÄù¾î¿¡¼ »ý¼ºÇÑ MIME µ¥ÀÌÅ͸¦ µðÄÚµù ÇØ ÁÖ´Â Àڹ٠Ŭ·¡½ºÀ̸ç, JSP, Servelet, Java¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.NamoMime ÆÐŰÁö¸¦ JSP³ª Servlet¿¡¼ »ç¿ëÇÏ·Á¸é ÅèÄÏÀÇ °æ¿ì, ÇØ´ç ÄÁÅØ½ºÆ® µð·ºÅ丮 ¾Æ·¡¿¡ ÀÖ´Â WEB-INF/classes ¿¡ com.namo.NamoMime Ŭ·¡½º¸¦ º¹»çÇØ¾ß ÇÕ´Ï´Ù. ´Ù½Ã ¸»ÇØ WEB-INF/classes/com/namo/ ¿¡ JSP¿Í °°ÀÌ ¹èÆ÷ÇÑ Å¬·¡½º¸¦ º¹»çÇØ¾ß ÇÕ´Ï´Ù.
¶ÇÇÑ NamoMime ÆÐŰÁö´Â MIMEÀ» µðÄÚµùÇϱâ À§Çؼ Java Mail 1.2 ÀÌ»óÀÇ ÆÐŰÁö¸¦ »ç¿ëÇÕ´Ï´Ù. º¸´Ù ÀÚ¼¼ÇÑ »çÇ×Àº http://java.sun.com ¿¡¼ Java Mail¿¡ ºÎºÐÀ» Âü°íÇϽʽÿÀ.
NamoMimeÀº ´Ù¼¸°³ÀÇ ¸Þ¼Òµå¸¦ Áö¿øÇϴµ¥ °¢°¢ÀÇ »ç¿ë¹æ¹ý°ú ¿ªÇÒÀº ´ÙÀ½°ú °°½À´Ï´Ù.
±âº» »ý¼ºÀÚÀÔ´Ï´Ù.
º»¹®¿¡ Æ÷ÇÔµÈ ÆÄÀÏÀÇ ±âº» URL, Áï ÆÄÀϸíÀ» Á¦¿ÜÇÑ URLÀ» ¸¸µì´Ï´Ù.
MIME ÀÎÄÚµùµÈ ÆÄÀÏÀ» uploadPath¿¡ ÀúÀåÇÕ´Ï´Ù. ÀÌ ¶§ uploadPath´Â Àý´ë ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
ÁÖ¾îÁø MIME ÀÎÄÚµù µ¥ÀÌÅ͸¦ µðÄÚµùÇÕ´Ï´Ù.
¿©±â¼ msgbody´Â MIME ÀÎÄÚµùµÈ ¹®ÀÚ¿ÀÔ´Ï´Ù. ÀÌ msgbody´Â ³»ºÎ¿¡¼ ISO-8859-1·Î º¯È¯Çؼ ó¸®ÇϹǷΠ¸Å°³º¯¼ö¸¦ µû·Î ÀÎÄÚµùÇØ¼´Â ¾ÈµË´Ï´Ù. ÀÌ ÇÔ¼öÀÇ ¸®ÅϰªÀº true/false·Î °¢°¢ µðÄÚµù ¼º°ø/½ÇÆÐ¸¦ ÀǹÌÇÕ´Ï´Ù.
MIME ¿¡ Æ÷ÇÔµÈ ÆÄÀÏÀ» (º»¹® Á¦¿Ü) ÁÖ¾îÁø uploadPath ¿¡ ÀúÀåÇÕ´Ï´Ù.
º»¹®À» ¹ÝȯÇÕ´Ï´Ù. ¸¸¾à º»¹® Áß¿¡ CID°¡ ÀÖ´Â °æ¿ì CID¸¦ setSaveURL¿¡¼ ÁöÁ¤ÇÑ uploadUrl·Î ¹Ù
²ß´Ï´Ù. À̶§ ÆÄÀÏ ¸íÀº MIME¿¡ ÁöÁ¤µÈ ÆÄÀϸíÀ» »ç¿ëÇÕ´Ï´Ù.
À» ÀÌ¿ëÇÑ µðÄÚµù ¼ø¼´Â ´ÙÀ½°ú °°½À´Ï´Ù.