`
roway
  • 浏览: 50362 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

xheditor实践一

 
阅读更多

页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<script type="text/javascript" src="xheditor-1.1.7/jquery/jquery-1.4.2.min.js"></script>
	<script type="text/javascript" src="xheditor-1.1.7/xheditor-1.1.7-zh-cn.min.js"></script>
	<script type="text/javascript">
		$(document).ready(function(){
			//初始化xhEditor编辑器插件
			$('#xh_editor').xheditor({
				tools:'full',
				skin:'default',
				upMultiple:true,
				upImgUrl: "servlet/UploadFileServlet",
				upImgExt: "jpg,jpeg,gif,bmp,png",
				upFlashUrl:"servlet/UploadSwfServlet",
				upFlashExt:"swf",
				upMediaUrl:"servlet/UploadMediaServlet",
				upMediaExt:"wmv,avi,wma,mp3,mid",
				onUpload:insertUpload,
				html5Upload:false
			});
			//xbhEditor编辑器图片上传回调函数
			function insertUpload(msg) {
				var _msg = msg.toString();
				var _picture_name = _msg.substring(_msg.lastIndexOf("/")+1);
				var _picture_path = Substring(_msg);
				var _str = "<input type='checkbox' name='_pictures' value='"+_picture_path+"' checked='checked' onclick='return false'/><label>"+_picture_name+"</label><br/>";
				$("#xh_editor").append(_msg);
				$("#uploadList").append(_str);
			}
			//处理服务器返回到回调函数的字符串内容,格式是JSON的数据格式.
			function Substring(s){
				return s.substring(s.substring(0,s.lastIndexOf("/")).lastIndexOf("/"),s.length);
			}
		});
	</script>
  </head>
  
  <body>
    <form action="" method="post">
  	<div>
  	<textarea id="xh_editor" name="contents" rows="25" style="width:100%; border: 1px"></textarea>
  	</div>
  	<div id="uploadList"></div>
	</form>
  </body>
  </html>

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
	<servlet>
		<servlet-name>XhEditor</servlet-name>
		<servlet-class>com.xheditor.servlet.UploadFileServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>XhEditor</servlet-name>
		<url-pattern>/servlet/UploadFileServlet</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>swf</servlet-name>
		<servlet-class>com.xheditor.servlet.UploadSwfServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>swf</servlet-name>
		<url-pattern>/servlet/UploadSwfServlet</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<servlet-name>media</servlet-name>
		<servlet-class>com.xheditor.servlet.UploadMediaServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>media</servlet-name>
		<url-pattern>/servlet/UploadMediaServlet</url-pattern>
	</servlet-mapping>
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>


package com.xheditor.servlet;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.lang.StringUtils;

@SuppressWarnings({ "serial", "deprecation" })
public class UploadFileServlet extends HttpServlet {
	
	private static String baseFileDir = File.separator + "upload" + File.separator;//上传文件存储目录
	private static String baseURLDir = "/upload/";//上传文件目录URL
	private static String fileExt = "jpg,jpeg,bmp,gif,png";
	private static Long maxSize = 0l;

	// 0:不建目录 1:按天存入目录 2:按月存入目录 3:按扩展名存目录 建议使用按天存
	private static String dirType = "1";
	
	/**
	 * 文件上传初始化工作
	 */
	public void init() throws ServletException {
		/*获取文件上传存储的相当路径*/
		if (!StringUtils.isBlank(this.getInitParameter("baseDir"))){
			baseFileDir = this.getInitParameter("baseDir");
		}
		
		String realBaseDir = this.getServletConfig().getServletContext().getRealPath(baseFileDir);
		File baseFile = new File(realBaseDir);
		if (!baseFile.exists()) {
			baseFile.mkdir();
		}

		/*获取文件类型参数*/
		fileExt = this.getInitParameter("fileExt");
		if (StringUtils.isBlank(fileExt)) fileExt = "jpg,jpeg,gif,bmp,png";

		/*获取文件大小参数*/
		String maxSize_str = this.getInitParameter("maxSize");
		if (StringUtils.isNotBlank(maxSize_str)) maxSize = new Long(maxSize_str);
		
		/*获取文件目录类型参数*/
		dirType = this.getInitParameter("dirType");
		
		if (StringUtils.isBlank(dirType))
			dirType = "1";
		if (",0,1,2,3,".indexOf("," + dirType + ",") < 0)
			dirType = "1";
	}

	/**
	 * 上传文件数据处理过程
	 */
	@SuppressWarnings({"unchecked" })
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html; charset=UTF-8");
		response.setHeader("Cache-Control", "no-cache");

		String err = "";
		String newFileName = "";

		DiskFileUpload upload = new DiskFileUpload();
		try {
			List<FileItem> items = upload.parseRequest(request);
			Map<String, Serializable> fields = new HashMap<String, Serializable>();
			Iterator<FileItem> iter = items.iterator();
			
			while (iter.hasNext()) {
				FileItem item = (FileItem) iter.next();
				if (item.isFormField())
					fields.put(item.getFieldName(), item.getString());
				else
					fields.put(item.getFieldName(), item);
			}
			
			/*获取表单的上传文件*/
			FileItem uploadFile = (FileItem)fields.get("filedata");
			
			/*获取文件上传路径名称*/
			String fileNameLong = uploadFile.getName();
			System.out.println("fileNameLong:" + fileNameLong);
			
			/*获取文件扩展名*/
			/*索引加1的效果是只取xxx.jpg的jpg*/
			String extensionName = fileNameLong.substring(fileNameLong.lastIndexOf(".") + 1);
			System.out.println("extensionName:" + extensionName);
			
			/*检查文件类型*/
			if (("," + fileExt.toLowerCase() + ",").indexOf("," + extensionName.toLowerCase() + ",") < 0){
				printInfo(response, "不允许上传此类型的文件", "");
				return;
			}
			/*文件是否为空*/
			if (uploadFile.getSize() == 0){
				printInfo(response, "上传文件不能为空", "");
				return;
			}
			/*检查文件大小*/
			if (maxSize > 0 && uploadFile.getSize() > maxSize){
				printInfo(response, "上传文件的大小超出限制", "");
				return;
			}
			
			//0:不建目录, 1:按天存入目录, 2:按月存入目录, 3:按扩展名存目录.建议使用按天存.
			String fileFolder = "";
			if (dirType.equalsIgnoreCase("1"))
				fileFolder = new SimpleDateFormat("yyyyMMdd").format(new Date());;
			if (dirType.equalsIgnoreCase("2"))
				fileFolder = new SimpleDateFormat("yyyyMM").format(new Date());
			if (dirType.equalsIgnoreCase("3"))
				fileFolder = extensionName.toLowerCase();
			
			/*文件存储的相对路径*/
			String saveDirPath = baseFileDir + fileFolder + "/";
			System.out.println("saveDirPath:" + saveDirPath);
			
			/*文件存储在容器中的绝对路径*/
			String saveFilePath = this.getServletConfig().getServletContext().getRealPath("") + baseFileDir + fileFolder + "/";
			System.out.println("saveFilePath:" + saveFilePath);
			
			/*构建文件目录以及目录文件*/
			File fileDir = new File(saveFilePath);
			if (!fileDir.exists()) {fileDir.mkdirs();}
			
			/*重命名文件*/
			String filename = UUID.randomUUID().toString();
			File savefile = new File(saveFilePath + filename + "." + extensionName);
			
			/*存储上传文件*/
			System.out.println(upload == null);
			uploadFile.write(savefile);
			
			String projectBasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
			//上传文件URL回调
			//newFileName =projectBasePath + baseURLDir + fileFolder + "/" + filename + "." + extensionName;
			//立即上传模式
			newFileName = "!" + projectBasePath + baseURLDir + fileFolder + "/" + filename + "." + extensionName;		
			System.out.println("newFileName:" + newFileName);
		} catch (Exception ex) {
			System.out.println(ex.getMessage());
			newFileName = "";
			err = "错误: " + ex.getMessage();
		}
		printInfo(response, err, newFileName);
	}
	
	/**
	 * 使用I/O流输出 json格式的数据
	 * @param response
	 * @param err
	 * @param newFileName
	 * @throws IOException
	 */
	public void printInfo(HttpServletResponse response, String err, String newFileName) throws IOException {
		PrintWriter out = response.getWriter();
		//String filename = newFileName.substring(newFileName.lastIndexOf("/") + 1);
		out.println("{\"err\":\"" + err + "\",\"msg\":\"" + newFileName + "\"}");
		out.flush();
		out.close();
	}
}


分享到:
评论

相关推荐

    HTML 在线编辑xheditor

    **1. xheditor特性** - **多语言支持**:xheditor内置多种语言包,满足不同地区用户的需求。 - **丰富的编辑功能**:提供加粗、斜体、下划线、字体颜色、字号调整、段落样式等基础编辑功能,以及插入图片、链接、...

    xheditor的使用

    **XHEditor** 是一款基于JavaScript的开源富文本编辑器,它在Web开发中被广泛使用,用于提供用户友好的在线文本编辑体验...通过深入研究和实践,你可以熟练地运用XHEditor来提升用户体验,打造专业的Web内容编辑平台。

    xhEditor实现插入代码功能

    这个过程涉及到JavaScript事件处理、DOM操作以及xhEditor的API使用,对于Web开发者来说,是一个很好的实践和学习案例。在实际应用中,你还可以结合其他技术,如代码高亮插件,使得插入的代码更易读,增强用户体验。

    最新版本xheditor-v1.2.2

    XHEditor是一款基于JavaScript的开源富文本编辑器,适用于Web应用程序,为用户提供类似Microsoft Word的在线编辑体验。最新版本XHEditor-v1.2.2带来了多项优化和改进,提升了用户体验和稳定性,是开发人员构建动态...

    xheditor for java

    《XHEditor在Java环境下的应用与实践》 XHEditor是一款流行的JavaScript富文本编辑器,它为网页提供了一个强大的文字编辑界面,支持多种格式的输入,如HTML、BBCode等,用户可以方便地进行图文混编,实现所见即所得...

    JQuery+XHEditor例子(含上传)

    **jQuery + XHEditor 实例解析** 在网页开发中,编辑器是不可或缺的一部分,它能让用户在前端直接进行文本编辑、格式化等...通过理解和实践本文中的示例,你将能够熟练掌握XHEditor的使用,并能根据需要扩展其功能。

    xhEditor struts2实现图片上传

    xhEditor是一款开源的JavaScript富文本编辑器,它提供了丰富的编辑功能,如字体样式设置、颜色调整、图片和文件上传等。而Struts2则是一个强大的MVC框架,用于构建Java Web应用。 首先,我们需要了解xhEditor的基本...

    Xheditor网页文本编辑器

    **Xheditor网页文本编辑器**是一款常用的在线文本编辑器,尤其适合初学者进行学习和实践。它提供了丰富的文本编辑功能,使得用户可以在网页上实现类似Word的编辑体验,广泛应用于论坛、博客、CMS(内容管理系统)等...

    xheditor-1.1.9文件

    1. **丰富的编辑功能**:XHEditor提供了常见的文字格式化选项,如字体、大小、颜色、对齐方式,以及列表、段落、链接、图片、表格、代码块等编辑工具,满足了日常网页内容编辑的需求。 2. **实时预览**:用户在编辑...

    struts1_xheditor web编辑器源代码

    Struts1_XHeditor 是一个基于Struts1框架的网页编辑器组件,它为Web应用程序提供了富文本编辑功能。在Web开发中,编辑器通常用于让用户在网页上创建和编辑内容,比如博客文章、论坛帖子或者网站内容。XHeditor是一款...

    xheditor+jquery进度条

    XHEditor是一款基于JavaScript的富文本编辑器,它结合了jQuery库,为用户提供了一个功能强大的在线文本编辑解决方案。在“xheditor+jquery进度条”这个主题中,我们将深入探讨XHEditor如何与jQuery进度条组件进行...

    xheditor-1.1.8 简易在线编辑器

    3. **社区资源**:利用开源社区中的教程、问答和示例,学习更多关于xheditor的使用技巧和最佳实践。 **五、应用场景** xheditor广泛应用于博客平台、论坛、CMS内容管理系统、在线办公系统、教育平台等需要用户输入...

    Xheditor 富文本编辑器 Java版

    Xheditor是一款功能强大的JavaScript富文本编辑器,专为网页设计和开发者提供便利。它以其简洁的界面、丰富的功能和良好的用户体验而受到广泛欢迎。Java版的Xheditor是将该编辑器与Java后端技术相结合,以实现更高效...

    xhEditor编辑器V0.97示例webform.rar

    1. **文本格式化**:xhEditor支持常见的文本格式化操作,如加粗、斜体、下划线、字体大小和颜色等,使得用户可以方便地对文本进行美化。 2. **插入多媒体**:用户可以方便地插入图片、视频和音频,提升内容的丰富度...

    xheditor asp.net

    【xheditor ASP.NET】是将xheditor这个强大的XHTML编辑器集成到ASP.NET框架中的技术实践。xheditor是一款开源的Web富文本编辑器,它提供了丰富的文本格式化功能,用户可以在网页上实现类似Word的编辑体验,极大地...

    xheditor集成struts2上传图片

    1. **xheditor**: - xheditor提供了一个用户友好的WYSIWYG(所见即所得)编辑界面,支持多种格式的文本编辑,如HTML、CSS、图片、表格等。 - 它支持多种语言,包括简体中文和繁体中文,方便不同地区的用户使用。 ...

    jsp+xheditor web文本编辑器源代码

    总的来说,“jsp+xheditor web文本编辑器源代码”是一个结合了服务器端编程与前端富文本编辑的实例,对于学习和实践JSP和Web开发技术,尤其是涉及到用户交互和内容管理的场景,具有很高的参考价值。开发者可以通过...

    ASP.NET Core MVC项目-企业主页

    XHEditor是一个JavaScript富文本编辑器,常用于网站内容的编辑和发布。在ASP.NET Core项目中,XHEditor可能被用作新闻编辑界面,允许用户输入格式化的文本、图片和链接等。 8. **路由与URL生成**: ASP.NET Core ...

    spring3MVC 框架demo

    xheditor是一个流行的JavaScript富文本编辑器,它可以提供类似Word的编辑体验。在Spring3MVC中,xheditor可以用来让用户输入和编辑消息。用户提交后,这些内容将作为HTTP请求的参数发送到服务器。在Controller中,你...

    纯javascript实现副文本框

    1. **基础结构**:首先,我们需要一个HTML容器,比如一个`&lt;div&gt;`,作为富文本编辑器的基础元素。这个容器将被JavaScript转化为可编辑区域。 2. **事件监听**:JavaScript可以监听用户的键盘输入、鼠标点击等事件,...

Global site tag (gtag.js) - Google Analytics