À§·Î

¼­¹ö¿¡¼­ÀÇ µ¥ÀÌÅÍ Ã³¸®Çϱâ

¾×Ƽºê½ºÄù¾î°¡ Àû¿ëµÈ °Ô½ÃÆÇ¿¡¼­ ÀÔ·ÂµÈ µ¥ÀÌÅÍÀÇ Ã³¸® ¹æ¹ýÀº ÀÏ¹Ý °Ô½ÃÆÇÀÇ Ã³¸® ¹æ¹ý°ú À¯»çÇÕ´Ï´Ù. ´Ù¸¸ ¾×Ƽºê½ºÄù¾î¿¡¼­ ÀÛ¼ºµÈ ³»¿ë¸¸ ´Ù¸£°Ô 󸮵˴ϴÙ.

¼­¹ö¿¡¼­ÀÇ µ¥ÀÌÅÍ Ã³¸®

¾×Ƽºê½ºÄù¾î¿¡¼­ 󸮵Ǵ ÆÄÀÏÀÇ ÇüÅ´ ´ÙÀ½°ú °°½À´Ï´Ù.

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(), "'", "\\'");

msgNoÀº ÇöÀç ÀúÀåÇÒ °Ô½Ã¹°ÀÇ ÀÏ·Ã ¹øÈ£ÀÔ´Ï´Ù. °Ô½ÃÆÇ¿¡¼­´Â ÀÌ ÀÏ·Ã ¹øÈ£·Î ±¸ºÐÇÏ¿© °Ô½Ã¹°ÀÌ ÀúÀåµÉ µð·ºÅ丮¸¦ ƯÁ¤ µð·ºÅ丮 ¾Æ·¡¿¡ ¸¸µé °Ô µË´Ï´Ù. ±×¸®°í ÅØ½ºÆ®¿¡ Æ÷ÇÔµÈ ÆÄÀÏÀ» ÀÌ µð·ºÅ丮¿¡ ÀúÀåÇϰí, HTML º»¹®¿¡ Ç¥½ÃµÈ ÆÄÀÏÀÇ ¸µÅ©¸¦ ÀúÀåÇÑ ¸µÅ©·Î º¯È¯ÇÕ´Ï´Ù. ±×·¯¹Ç·Î HTML ÆÄÀÏÀ» »ç¿ëÀÚ¿¡°Ô Àü¼ÛÇÏ¿©µµ º°µµÀÇ Ã³¸®°¡ ÇÊ¿ä¾øÀÌ Æ÷ÇÔµÈ ÆÄÀÏÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

JSP¿¡¼­ÀÇ MIME µðÄÚµùÀ» À§ÇØ ³ª¸ð¿¡¼­ ¹èÆ÷ÇÏ´Â com.namo.NamoMime ÆÐŰÁö¸¦ ÀÌ¿ëÇÕ´Ï´Ù. ÀÌ ÆÐŰÁö´Â ¾×Ƽºê½ºÄù¾î¿¡¼­ »ý¼ºÇÑ 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Àº ´Ù¼¸°³ÀÇ ¸Þ¼Òµå¸¦ Áö¿øÇϴµ¥ °¢°¢ÀÇ »ç¿ë¹æ¹ý°ú ¿ªÇÒÀº ´ÙÀ½°ú °°½À´Ï´Ù.

public NamoMime()

±âº» »ý¼ºÀÚÀÔ´Ï´Ù.

public void mime.setSaveURL(String uploadUrl)

º»¹®¿¡ Æ÷ÇÔµÈ ÆÄÀÏÀÇ ±âº» URL, Áï ÆÄÀϸíÀ» Á¦¿ÜÇÑ URLÀ» ¸¸µì´Ï´Ù.

public void mime.setSavePath(String uploadPath)

MIME ÀÎÄÚµùµÈ ÆÄÀÏÀ» uploadPath¿¡ ÀúÀåÇÕ´Ï´Ù. ÀÌ ¶§  uploadPath´Â Àý´ë ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

public bool mime.decode(String msgbody)

ÁÖ¾îÁø MIME ÀÎÄÚµù µ¥ÀÌÅ͸¦ µðÄÚµùÇÕ´Ï´Ù.

¿©±â¼­ msgbody´Â MIME ÀÎÄÚµùµÈ ¹®ÀÚ¿­ÀÔ´Ï´Ù. ÀÌ msgbody´Â ³»ºÎ¿¡¼­ ISO-8859-1·Î º¯È¯Çؼ­ ó¸®ÇϹǷΠ¸Å°³º¯¼ö¸¦ µû·Î ÀÎÄÚµùÇØ¼­´Â ¾ÈµË´Ï´Ù. ÀÌ ÇÔ¼öÀÇ ¸®ÅϰªÀº true/false·Î °¢°¢ µðÄÚµù ¼º°ø/½ÇÆÐ¸¦ ÀǹÌÇÕ´Ï´Ù.

public void mime.saveFile()

MIME ¿¡ Æ÷ÇÔµÈ ÆÄÀÏÀ» (º»¹® Á¦¿Ü) ÁÖ¾îÁø uploadPath ¿¡ ÀúÀåÇÕ´Ï´Ù.

public String getBodyContent()

º»¹®À» ¹ÝȯÇÕ´Ï´Ù. ¸¸¾à º»¹® Áß¿¡ CID°¡ ÀÖ´Â °æ¿ì CID¸¦ setSaveURL¿¡¼­ ÁöÁ¤ÇÑ uploadUrl·Î ¹Ù

²ß´Ï´Ù. À̶§ ÆÄÀÏ ¸íÀº MIME¿¡ ÁöÁ¤µÈ ÆÄÀϸíÀ» »ç¿ëÇÕ´Ï´Ù.

NamoMimeÀ» ÀÌ¿ëÇÑ µðÄÚµù ¼ø¼­´Â ´ÙÀ½°ú °°½À´Ï´Ù.

  • Ŭ·¡½º »ý¼ºÇÕ´Ï´Ù.
  • CID¸¦ ´ëüÇÒ ±âº» URLÀ» ÁöÁ¤ÇÕ´Ï´Ù.
  • ÆÄÀÏÀ» ÀúÀåÇÒ Æú´õ¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
  • MIME ÀÎÄÚµù µ¥ÀÌÅ͸¦ µðÄÚµùÇÕ´Ï´Ù.
  • µðÄÚµùÇÑ ÆÄÀÏÀ» ÀúÀåÇÏ°í º»¹®À» °¡Á®¿É´Ï´Ù.