JavaScript È°¿ëÆÁ
2019.06.04 / 19:01

[JSP] ½º¸¶Æ®¿¡µðÅÍ(smarteditor)ÀÇ ½Ì±Û/¸ÖƼ À̹ÌÁö¾÷·ÎµåÇϱâ

Źµ¹ÀÌ°³¹ßÀÚ
Ãßõ ¼ö 329

Âü°í] °ü·ÃÆ÷½ºÆ® 

[jsp] ³×À̹öÀÇ ½º¸¶Æ®¿¡µðÅÍ(SmartEditor) Àû¿ëÇϱâ 

½º¸¶Æ®¿¡µðÅÍ¿¡¼­ »çÁøÀ» ¾÷·Îµå Çغ¸ÀÚ.


 


°¢ ºê¶ó¿ìÀúº°·Î »çÁø ¹öÆ° Ŭ¸¯½Ã ¾÷·Îµå ±â´É¿¡ ´ëÇÑ À¯ÇüÀÌ Á¶±Ý½Ä Ʋ·ÁÁø´Ù.

IE11 ¹Ì¸¸ ¹öÀü¿¡¼­´Â  ½Ì±Û ¸ÖƼÆÄÆ® ¾÷·ÎµåÈ­¸éÀ» Ãâ·Â½ÃÅ°°í

IE11, Å©·Ò, »çÆĸ® µî¿¡¼­´Â µå·¡±×¾Øµå·Ó±â´ÉÀ¸·Î ¸ÖƼÆÄÀÏ ¾÷·Îµå(µå·¡±×¾Øµå·Ó) ÆûÀ» Ãâ·Â

½ÃŲ´Ù.



½Ì±Û¾÷·Îµå È­¸é:


 


¸ÖƼÇþ÷·Îµå È­¸é(µå·¡±×¾Øµå·ÓÀÌ¿ë)






JSP ȯ°æ¿¡¼­ ÆÄÀÏ Ã³¸®¸¦ À§ÇØ ´ÙÀ½ ¶óÀ̺귯¸®¸¦ WebContent\WEB-INF\lib\ Æú´õ¿¡ ³ÖÀÚ.  (÷ºÎÆÄÀÏ Âü°í)


commons-fileupload-1.2.2.jar

commons-io-1.4.jar


 



WebContent/SE2/photo_uploader/popup µð·ºÅ丮 ³»¿¡ ÀÖ´Â ÆÄÀÏÀ» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØÁÖÀÚ.

¡Ø ½º¸¶Æ®¿¡µðÅÍ °¡À̵å Âü°í http://jindo.dev.naver.com/smarteditor/user_guide/


photo_uploader.html

: »çÁø Äü ¾÷·Î´õ¿¡¼­ »ç¿ëÇÏ´Â HTML Æ˾÷ ÆäÀÌÁö


´ÙÀ½ ±×¸²°ú °°ÀÌ formÀÇ action¼Ó¼ºÀ» Á¦°Å 




attach_photo.js 

: photo_uploader.html ÆÄÀÏ¿¡¼­ »ç¿ëÇÏ´Â JavaScript ÆÄÀÏ. »çÁø Äü ¾÷·Î´õ¸¦ ¼³Ä¡ÇÒ ¶§ Äڵ带 ¹Ýµå½Ã ¼öÁ¤ÇØ¾ß ÇÑ´Ù.


º¯°æÇÔ¼ö : callFileUploader(), html5Upload()

callFileUploader() : ½Ì±ÛÆÄÀÏ ¾÷·Îµå , HTML5¸¦ Áö¿øÇÏÁö ¾Ê´Â ºê¶ó¿ìÀú¿¡¼­ »ç¿ë

html5Upload() : ¸ÖƼÇà ¾÷·Îµå, HTML5¸¦ Áö¿øÇÏ´Â ºê¶ó¿ìÀú¿¡¼­ »ç¿ë


¸ÕÀú callFileUploader() ÇÔ¼ö¿¡¼­ ´ÙÀ½ ¼Ó¼ºÀ» ÇöÀç ÀÚ½ÅÀÇ È¯°æ¿¡ ¸Â°Ô ¼öÁ¤ÇÏÀÚ


sUrl : »çÁøÀ» ¾÷·ÎµåÇÒ ¼­¹öÀÇ °æ·Î 

sCallback : ¾÷·Îµå ÀÌÈÄ¿¡ iframeÀÌ redirectµÉ ÄݹéÆäÀÌÁöÀÇ ÁÖ¼Ò


 


´ÙÀ½À¸·Î html5Upload() ÇÔ¼ö¿¡¼­ sUploadURLÀ» º¯°æÇÏÀÚ.

 



ÇÊ¿äÇÑ JSPÆÄÀÏÀ» ´ÙÀ½°ú °°ÀÌ »ý¼ºÇÏÀÚ.

file_uploader.jsp

file_uploader_html5.jsp


[file_uploader.jsp]

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@page import="java.io.FileOutputStream"%>
<%@page import="java.io.OutputStream"%>
<%@page import="java.io.InputStream"%>
<%@page import="java.util.UUID"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.io.File"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.List"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
 
<%
String return1="";
String return2="";
String return3="";
String name = "";
 
if (ServletFileUpload.isMultipartContent(request)){
    ServletFileUpload uploadHandler = new ServletFileUpload(new DiskFileItemFactory());
    uploadHandler.setHeaderEncoding("UTF-8");
    List<FileItem> items = uploadHandler.parseRequest(request);
    for (FileItem item : items) {
        if(item.getFieldName().equals("callback")) {
            return1 = item.getString("UTF-8");
        } else if(item.getFieldName().equals("callback_func")) {
            return2 = "?callback_func="+item.getString("UTF-8");
        } else if(item.getFieldName().equals("Filedata")) {
            if(item.getSize() > 0) {
      
                name = item.getName().substring(item.getName().lastIndexOf(File.separator)+1);
                String filename_ext = name.substring(name.lastIndexOf(".")+1);
                filename_ext = filename_ext.toLowerCase();
                String[] allow_file = {"jpg","png","bmp","gif"};
                int cnt = 0;
                for(int i=0; i<allow_file.length; i++) {
                    if(filename_ext.equals(allow_file[i])){
                        cnt++;
                    }
                }
                if(cnt == 0) {
                    return3 = "&errstr="+name;
                } else {
                     
                    //ÆÄÀÏ ±âº»°æ·Î
                    String dftFilePath = request.getSession().getServletContext().getRealPath("/");
                    //ÆÄÀÏ ±âº»°æ·Î _ »ó¼¼°æ·Î
                    String filePath = dftFilePath + "SE2" + File.separator +"upload" + File.separator;
                     
                    File file = null;
                    file = new File(filePath);
                    if(!file.exists()) {
                        file.mkdirs();
                    }
                     
                    String realFileNm = "";
                    SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
                    String today= formatter.format(new java.util.Date());
                    realFileNm = today+UUID.randomUUID().toString() + name.substring(name.lastIndexOf("."));
                     
                    String rlFileNm = filePath + realFileNm;
                    ///////////////// ¼­¹ö¿¡ ÆÄÀϾ²±â ///////////////// 
                    InputStream is = item.getInputStream();
                    OutputStream os=new FileOutputStream(rlFileNm);
                    int numRead;
                    byte b[] = new byte[(int)item.getSize()];
                    while((numRead = is.read(b,0,b.length)) != -1){
                        os.write(b,0,numRead);
                    }
                    if(is != null) {
                        is.close();
                    }
                    os.flush();
                    os.close();
                    ///////////////// ¼­¹ö¿¡ ÆÄÀϾ²±â /////////////////
                     
                    return3 += "&bNewLine=true";
                                // img Å±×ÀÇ title ¿É¼Ç¿¡ µé¾î°¥ ¿øº»ÆÄÀϸí
                    return3 += "&sFileName="+ name;
                    return3 += "&sFileURL=/smarteditorSample/SE2/upload/"+realFileNm;
                }
            }else {
                  return3 += "&errstr=error";
            }
        }
    }
}
response.sendRedirect(return1+return2+return3);
 
%>
cs



[file_uploader_html5.jsp]

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@page import="java.io.*"%>
<%@page import="java.util.UUID"%>
<%@page import="java.text.SimpleDateFormat"%>
 
<%
    //ÆÄÀÏÁ¤º¸
    String sFileInfo = "";
    //ÆÄÀϸíÀ» ¹Þ´Â´Ù - ÀϹݠ¿øº»ÆÄÀϸí
    String filename = request.getHeader("file-name");
    //ÆÄÀÏ È®ÀåÀÚ
    String filename_ext = filename.substring(filename.lastIndexOf(".") + 1);
    //È®ÀåÀÚ¸¦¼Ò¹®ÀڷΠº¯°æ
    filename_ext = filename_ext.toLowerCase();
 
    //À̹ÌÁö °ËÁõ ¹è¿­º¯¼ö
    String[] allow_file = { "jpg""png""bmp""gif" };
 
    //µ¹¸®¸é¼­ È®ÀåÀÚ°¡ À̹ÌÁöÀÎÁö 
    int cnt = 0;
    for (int i = 0; i < allow_file.length; i++) {
        if (filename_ext.equals(allow_file[i])) {
            cnt++;
        }
    }
 
    //À̹ÌÁö°¡ ¾Æ´Ô
    if (cnt == 0) {
        out.println("NOTALLOW_" + filename);
    } else {
        //À̹ÌÁöÀ̹ǷΠ½Å±Ô ÆÄÀϷΠµð·ºÅ丮 ¼³Á¤ ¹× ¾÷·Îµå   
        //ÆÄÀÏ ±âº»°æ·Î
        String dftFilePath = request.getSession().getServletContext().getRealPath("/");
        //ÆÄÀÏ ±âº»°æ·Î _ »ó¼¼°æ·Î
        String filePath = dftFilePath + "SE2" + File.separator + "multiupload" + File.separator;
        File file = new File(filePath);
        if (!file.exists()) {
            file.mkdirs();
        }
        String realFileNm = "";
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
        String today = formatter.format(new java.util.Date());
        realFileNm = today + UUID.randomUUID().toString() + filename.substring(filename.lastIndexOf("."));
        String rlFileNm = filePath + realFileNm;
        ///////////////// ¼­¹ö¿¡ ÆÄÀϾ²±â ///////////////// 
        InputStream is = request.getInputStream();
        OutputStream os = new FileOutputStream(rlFileNm);
        int numRead;
        byte b[] = new byte[Integer.parseInt(request.getHeader("file-size"))];
        while ((numRead = is.read(b, 0, b.length)) != -1) {
            os.write(b, 0, numRead);
        }
        if (is != null) {
            is.close();
        }
        os.flush();
        os.close();
        ///////////////// ¼­¹ö¿¡ ÆÄÀϾ²±â /////////////////
 
        // Á¤º¸ Ãâ·Â
        sFileInfo += "&bNewLine=true";    
        sFileInfo += "&sFileName=" + filename;    
        sFileInfo += "&sFileURL=/smarteditorSample/SE2/multiupload/"+realFileNm;
        out.println(sFileInfo);
    }
%>
cs



´ÜÀÏÆÄÀÏ ¾÷·Îµå Å×½ºÆ® :


 





¸ÖƼÆÄÀÏ ¾÷·Îµå Å×½ºÆ® :