码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC+kindeditor在线HTML编辑器

时间:2014-12-22 11:22:47      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:

    去官网下载,解压,都有实例代码,直接使用!~

    前台:

    

var editor;
				KindEditor.ready(function(K) {
					editor = K.create(‘textarea[name="Introduce"]‘, {
							uploadJson : ‘file_upload‘,//上传
			                fileManagerJson : ‘file_manager‘,//文件管理
			                allowFileManager : true,
			                afterBlur: function () { this.sync(); },//数据同步
					});
					K(‘#image1‘).click(function() {
						editor.loadPlugin(‘image‘, function() {
							editor.plugin.imageDialog({
								imageUrl : K(‘#ProductImage‘).val(),
								clickFn : function(url, title, width, height, border, align) {
									K(‘#ProductImage‘).val(url);
									editor.hideDialog();
								}
							});
						});
					});

jsp页面:

    

<td>商品图片:</td>
<td><input type="text" id="ProductImage" name="ProductImage"  class="easyui-validatebox" value="${tp.productImage}"  required=true /> <input type="button" id="image1" value="选择图片" />(网络图片 + 本地上传)</td>
</tr> 
<tr>
    <td>商品描述</td>
    	<td><textarea  name="Introduce" style="width:700px;height:200px;visibility:hidden;"  >${tp.introduce}</textarea></td>

后台:

private static final ObjectMapper objectMapper = new ObjectMapper();
private PrintWriter writer = null;

/**
	 * to商品添加、修改上传
	 * @return
	 * @throws Exception 
	 */
	@RequestMapping(value="/file_upload",method=RequestMethod.POST)
	public void file_upload(HttpServletRequest request, HttpServletResponse response) throws Exception{
	
		  ServletContext application = request.getSession().getServletContext();
	        String savePath = application.getRealPath("/") + "upload/";
	        // 文件保存目录URL
	        String saveUrl = request.getContextPath() + "/upload/";
	 
	        // 定义允许上传的文件扩展名
	        HashMap<String, String> extMap = new HashMap<String, String>();
	        extMap.put("image", "gif,jpg,jpeg,png,bmp");
	        extMap.put("flash", "swf,flv");
	        extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
	        extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
	 
	        // 最大文件大小
	        long maxSize = 1000000;
	 
	        response.reset();
	        response.setCharacterEncoding("UTF-8");
	        response.setContentType("text/html");
	        writer = response.getWriter();
	        if (!ServletFileUpload.isMultipartContent(request)) {
	            writer.println(objectMapper.writeValueAsString(getError("请选择文件。")));
	            return;
	 
	        }
	        // 检查目录
	        File uploadDir = new File(savePath);
	        if (!uploadDir.isDirectory()) {
	            writer.println(objectMapper.writeValueAsString(getError("上传目录不存在。")));
	            return;
	        }
	        // 检查目录写权限
	        if (!uploadDir.canWrite()) {
	            writer.println(objectMapper.writeValueAsString(getError("上传目录没有写权限。")));
	            return;
	        }
	 
	        String dirName = request.getParameter("dir");
	        if (dirName == null) {
	            dirName = "image";
	        }
	        if (!extMap.containsKey(dirName)) {
	            writer.println(objectMapper.writeValueAsString(getError("目录名不正确。")));
	            return;
	        }
	        // 创建文件夹
	        savePath += dirName + "/";
	        saveUrl += dirName + "/";
	        File saveDirFile = new File(savePath);
	        if (!saveDirFile.exists()) {
	            saveDirFile.mkdirs();
	        }
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
	        String ymd = sdf.format(new Date());
	        savePath += ymd + "/";
	        saveUrl += ymd + "/";
	        File dirFile = new File(savePath);
	        if (!dirFile.exists()) {
	            dirFile.mkdirs();
	        }
	 
	        FileItemFactory factory = new DiskFileItemFactory();
	        ServletFileUpload upload = new ServletFileUpload(factory);
	        upload.setHeaderEncoding("UTF-8");
	        List items = upload.parseRequest(request);
	        Iterator itr = items.iterator();
	        while (itr.hasNext()) {
	            FileItem item = (FileItem) itr.next();
	            String fileName = item.getName();
	            if (!item.isFormField()) {
	                // 检查文件大小
	                if (item.getSize() > maxSize) {
	                    writer.println(objectMapper.writeValueAsString(getError("上传文件大小超过限制。")));
	                    return;
	                }
	                // 检查扩展名
	                String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
	                if (!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)) {
	                    writer.println(objectMapper.writeValueAsString(getError("上传文件扩展名是不允许的扩展名。\n只允许"
	                            + extMap.get(dirName) + "格式。")));
	                    return;
	                }
	 
	                SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
	                String newFileName =
	                        df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
	                try {
	                    File uploadedFile = new File(savePath, newFileName);
	                    item.write(uploadedFile);
	                } catch (Exception e) {
	                    writer.println(objectMapper.writeValueAsString(getError("上传文件失败。")));
	                }
	 
	                Map<String, Object> msg = new HashMap<String, Object>();
	                msg.put("error", 0);
	                msg.put("url", saveUrl + newFileName);
	                writer.println(objectMapper.writeValueAsString(msg));
	               
	                return;
	            }
	        }
	        return;
	}
	
	@SuppressWarnings("unchecked")
	@RequestMapping(value="/file_manager")
	public void file_manager(HttpServletRequest request, HttpServletResponse response) throws Exception{
		
		 ServletContext application = request.getSession().getServletContext();
	        ServletOutputStream out = response.getOutputStream();
	        // 根目录路径,可以指定绝对路径,比如 /var/www/upload/
	        String rootPath = application.getRealPath("/") + "upload/";
	        // 根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/upload/
	        String rootUrl = request.getContextPath() + "/upload/";
	        // 图片扩展名
	        String[] fileTypes = new String[] {"gif", "jpg", "jpeg", "png", "bmp"};
	 
	        String dirName = request.getParameter("dir");
	        if (dirName != null) {
	            if (!Arrays.<String>asList(new String[] {"image", "flash", "media", "file"}).contains(
	                    dirName)) {
	                out.println("Invalid Directory name.");
	                return;
	            }
	            rootPath += dirName + "/";
	            rootUrl += dirName + "/";
	            File saveDirFile = new File(rootPath);
	            if (!saveDirFile.exists()) {
	                saveDirFile.mkdirs();
	            }
	        }
	        // 根据path参数,设置各路径和URL
	        String path = request.getParameter("path") != null ? request.getParameter("path") : "";
	        String currentPath = rootPath + path;
	        String currentUrl = rootUrl + path;
	        String currentDirPath = path;
	        String moveupDirPath = "";
	        if (!"".equals(path)) {
	            String str = currentDirPath.substring(0, currentDirPath.length() - 1);
	            moveupDirPath =
	                    str.lastIndexOf("/") >= 0 ? str.substring(0, str.lastIndexOf("/") + 1) : "";
	        }
	 
	        // 排序形式,name or size or type
	        String order =
	                request.getParameter("order") != null ? request.getParameter("order").toLowerCase()
	                        : "name";
	 
	        // 不允许使用..移动到上一级目录
	        if (path.indexOf("..") >= 0) {
	            out.println("Access is not allowed.");
	            return;
	        }
	        // 最后一个字符不是/
	        if (!"".equals(path) && !path.endsWith("/")) {
	            out.println("Parameter is not valid.");
	            return;
	        }
	        // 目录不存在或不是目录
	        File currentPathFile = new File(currentPath);
	        if (!currentPathFile.isDirectory()) {
	            out.println("Directory does not exist.");
	            return;
	        }
	        // 遍历目录取的文件信息
	        List<Hashtable> fileList = new ArrayList<Hashtable>();
	        if (currentPathFile.listFiles() != null) {
	            for (File file : currentPathFile.listFiles()) {
	                Hashtable<String, Object> hash = new Hashtable<String, Object>();
	                String fileName = file.getName();
	                if (file.isDirectory()) {
	                    hash.put("is_dir", true);
	                    hash.put("has_file", (file.listFiles() != null));
	                    hash.put("filesize", 0L);
	                    hash.put("is_photo", false);
	                    hash.put("filetype", "");
	                } else if (file.isFile()) {
	                    String fileExt =
	                            fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
	                    hash.put("is_dir", false);
	                    hash.put("has_file", false);
	                    hash.put("filesize", file.length());
	                    hash.put("is_photo", Arrays.<String>asList(fileTypes).contains(fileExt));
	                    hash.put("filetype", fileExt);
	                }
	                hash.put("filename", fileName);
	                hash.put("datetime",
	                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified()));
	                fileList.add(hash);
	            }
	        }
	  
	        if ("size".equals(order)) {
	            Collections.sort(fileList, new SizeComparator());
	        } else if ("type".equals(order)) {
	        	
	            Collections.sort(fileList, new TypeComparator());
	        } else {
	            Collections.sort(fileList, new NameComparator());
	        
	        }
	        Map<String, Object> msg = new HashMap<String, Object>();
	        msg.put("moveup_dir_path", moveupDirPath);
	        msg.put("current_dir_path", currentDirPath);
	        msg.put("current_url", currentUrl);
	        msg.put("total_count", fileList.size());
	        msg.put("file_list", fileList);
	        response.setContentType("application/json; charset=UTF-8");
	        String msgStr = objectMapper.writeValueAsString(msg);
	        out.println(msgStr);
	}
	

	
	 private Map<String, Object> getError(String message) {
	        Map<String, Object> msg = new HashMap<String, Object>();
	        msg.put("error", 1);
	        msg.put("message", message);
	        return msg;
	    }
	 
	 @SuppressWarnings("rawtypes")
	    class NameComparator implements Comparator {
	        public int compare(Object a, Object b) {
	            Hashtable hashA = (Hashtable) a;
	            Hashtable hashB = (Hashtable) b;
	            if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) {
	                return -1;
	            } else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) {
	                return 1;
	            } else {
	                return ((String) hashA.get("filename")).compareTo((String) hashB.get("filename"));
	            }
	        }
	    }
	 
	    @SuppressWarnings("rawtypes")
	    class SizeComparator implements Comparator {
	        public int compare(Object a, Object b) {
	            Hashtable hashA = (Hashtable) a;
	            Hashtable hashB = (Hashtable) b;
	            if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) {
	                return -1;
	            } else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) {
	                return 1;
	            } else {
	                if (((Long) hashA.get("filesize")) > ((Long) hashB.get("filesize"))) {
	                    return 1;
	                } else if (((Long) hashA.get("filesize")) < ((Long) hashB.get("filesize"))) {
	                    return -1;
	                } else {
	                    return 0;
	                }
	            }
	        }
	    }
	 
	    @SuppressWarnings("rawtypes")
	    class TypeComparator implements Comparator {
	        public int compare(Object a, Object b) {
	            Hashtable hashA = (Hashtable) a;
	            Hashtable hashB = (Hashtable) b;
	            if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) {
	                return -1;
	            } else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) {
	                return 1;
	            } else {
	                return ((String) hashA.get("filetype")).compareTo((String) hashB.get("filetype"));
	            }
	        }
	    }


SpringMVC+kindeditor在线HTML编辑器

标签:

原文地址:http://my.oschina.net/pzxzj/blog/359085

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!