[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 |
´ÜÀÏÆÄÀÏ ¾÷·Îµå Å×½ºÆ® :
¸ÖƼÆÄÀÏ ¾÷·Îµå Å×½ºÆ® :
[Ãâó] [JSP] ½º¸¶Æ®¿¡µðÅÍ(smarteditor)ÀÇ ½Ì±Û/¸ÖƼ À̹ÌÁö¾÷·ÎµåÇϱâ |ÀÛ¼ºÀÚ ÀÚ¹ÙÅ·