网络查找的资料都是说Ckeditor是Fckeditor的升级,虽然它的界面比较的漂亮,但是有些功能必须要另外的添加,例如上传功能,我在网上查找了很多资料后,才找了这个比较好的,所以和大家分享一下。
程序的结构图
在index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<script type="text/javascript">
window.onload = function() {
CKEDITOR.replace('editor');
};
</script>
</head>
<body>
<form action="ShowServlet" method="post">
<textarea rows="" cols="" name="editor"></textarea>
<br /> <input type="submit" value="提交"><input type="reset">
</form>
</body>
</html>
上传的操作页面
browse.jsp
<%@page import="java.io.File"%>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<title>图片浏览</title>
<script type="text/javascript">
//这段函数是重点,不然不能和CKEditor互动了
function funCallback(funcNum, fileUrl) {
var parentWindow = (window.parent == window) ? window.opener
: window.parent;
parentWindow.CKEDITOR.tools.callFunction(funcNum, fileUrl);
window.close();
}
</script>
</head>
<body>
<%
String path = request.getContextPath() + "/";
String type = "";
if (request.getParameter("type") != null)//获取文件分类
type = request.getParameter("type").toLowerCase() + "/";
String clientPath = "ckeditor/uploader/upload/" + type;
File root = new File(request.getSession().getServletContext()
.getRealPath(clientPath));
if (!root.exists()) {
root.mkdirs();
}
String callback = request.getParameter("CKEditorFuncNum");
File[] files = root.listFiles();
if (files.length > 0) {
for (File file : files) {
String src = path + clientPath + file.getName();
out.println("<img width='110px' height='70px' src='" + src
+ "' alt='" + file.getName()
+ "' onclick=\"funCallback(" + callback + ",'"
+ src + "')\">");
}
} else {
out.println("<h3>未检测到资源。</h3>");
}
%>
</body>
</html>
upload.jsp
<%@page import="java.io.File"%>
<%@page import="java.util.UUID"%>
<%@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.FileItemFactory"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<title>JSP上传文件</title>
</head>
<body>
<%
String path = request.getContextPath() + "/";
if (ServletFileUpload.isMultipartContent(request)) {
String type = "";
if (request.getParameter("type") != null)//获取文件分类
type = request.getParameter("type").toLowerCase() + "/";
String callback = request.getParameter("CKEditorFuncNum");//获取回调JS的函数Num
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(
factory);
servletFileUpload.setHeaderEncoding("UTF-8");//解决文件名乱码的问题
List<FileItem> fileItemsList = servletFileUpload
.parseRequest(request);
for (FileItem item : fileItemsList) {
if (!item.isFormField()) {
String fileName = item.getName();
fileName = "file" + System.currentTimeMillis()
+ fileName.substring(fileName.lastIndexOf("."));
//定义文件路径,根据你的文件夹结构,可能需要做修改
String clientPath = "ckeditor/uploader/upload/" + type
+ fileName;
//保存文件到服务器上
File file = new File(request.getSession()
.getServletContext().getRealPath(clientPath));
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
item.write(file);
//打印一段JS,调用parent页面的CKEditor的函数,传递函数编号和上传后文件的路径;这句很重要,成败在此一句
out.println("<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction("
+ callback
+ ",'"
+ path
+ clientPath
+ "')</script>");
break;
}
}
}
%>
</body>
</html>
config.js
/*
* Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.editorConfig = function(config) {
// Define changes to default configuration here. For example:
// config.language = 'fr';
// config.uiColor = '#AADC6E';
config.language = 'zh-cn';
config.filebrowserBrowseUrl = 'ckeditor/uploader/browse.jsp';
config.filebrowserImageBrowseUrl = 'ckeditor/uploader/browse.jsp?type=Images';
config.filebrowserFlashBrowseUrl = 'ckeditor/uploader/browse.jsp?type=Flashs';
config.filebrowserUploadUrl = 'ckeditor/uploader/upload.jsp';
config.filebrowserImageUploadUrl = 'ckeditor/uploader/upload.jsp?type=Images';
config.filebrowserFlashUploadUrl = 'ckeditor/uploader/upload.jsp?type=Flashs';
config.filebrowserWindowWidth = '640';
config.filebrowserWindowHeight = '480';
config.toolbar_A = [
['Source'],
['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-',
'Print', 'SpellChecker', 'Scayt'],
['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll',
'RemoveFormat'],
'/',
['Bold', 'Italic', 'Underline', 'Strike', '-', 'Subscript',
'Superscript'],
['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent',
'Blockquote'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
['Link', 'Unlink', 'Anchor'],
['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley',
'SpecialChar', 'PageBreak'], '/',
['Styles', 'Format', 'Font', 'FontSize'], ['TextColor', 'BGColor'],
['Maximize', 'ShowBlocks']];
config.toolbar = 'A';
};
所使用的源码,被打包成压缩包
- 大小: 20.5 KB
分享到:
相关推荐
在Java环境下,可以创建Java插件与CKEditor的JavaScript部分进行通信,实现更复杂的业务逻辑。 6. **版本兼容性** 版本号"3.5.3"表明这是CKEditor的一个较旧版本,发布于2011年。虽然它可能缺少一些较新版本中的...
在Java环境中,CKEditor通过JavaScript与服务器端交互,实现数据的提交和接收,广泛应用于内容管理系统、论坛、博客等Web应用中。CKEditor 3.6.2是该编辑器的一个特定版本,它在前一版本的基础上进行了优化和改进,...
**标题与描述解析** ...通过了解Python库、Django框架和CKEditor 5的相关知识,开发者可以有效地在项目中实现这一功能,提升用户对文本编辑的体验。安装和使用时,遵循标准的Python和Django实践即可。
"django-ckeditor-master.zip" 文件包含了一个针对Django3优化的CKEditor实现,它提供了一个易配置、易使用的富文本编辑器解决方案。 CKEditor是一款广泛使用的开源富文本编辑器,它允许用户在网页上创建和编辑内容...
3. **Image插件**:全面的图片管理功能,支持上传、裁剪、调整大小和添加alt属性等,提升图文混排的质量。 4. **FontSize插件**:提供字体大小选择,便于调整文本视觉效果,适应不同场景的需求。 5. **FontFamily...
总结来说,CKEditor、ckeditor-java和ckfinder是用于构建强大内容编辑功能的Web开发工具集,它们的组合使得Java开发者能轻松在Web应用中实现高级的富文本编辑和文件管理功能,提高用户体验并简化后台处理流程。
总之,"ckeditor-sdk-offline.zip_ckeditor"为开发者提供了全面的CKEditor开发工具,无论是初次接触还是资深开发者,都能从中找到所需资源,快速实现网页中的富文本编辑功能。通过学习和利用这个SDK,开发者可以提高...
为了实现视频上传功能,需要结合CKEditor 5的`UploadAdapter`接口。你可以创建一个适配器,将用户上传的视频文件发送到服务器,并返回一个包含视频URL的数据对象。这将被`mediaEmbed`插件用来生成播放器代码。 6. ...
`ckeditor`就是这样一个组件,尤其在文本编辑功能的实现上,它扮演着至关重要的角色。`ckeditor`是一款强大的富文本编辑器,它基于jQuery库构建,为网页内容的编辑提供了丰富的功能和灵活的定制性。 **1. CKEditor...
CKEditor,作为一款备受赞誉的在线文本编辑器,它的7.x-1.x-dev版本的发布,代表了这...对于开发者来说,这个压缩包是一个宝贵的资源,无论是为了学习CKEditor的实现,还是为了在其基础上构建自己的文本编辑解决方案。
1. **CKEditor 5 Classic Edition**:此版本沿用了传统的编辑器布局,拥有类似传统桌面文字处理软件的界面,提供了熟悉的顶部工具栏,包括格式化、链接创建、图片上传等常用功能,旨在为用户提供无缝的写作体验。...
本教程将详细介绍如何在Struts2框架下配置和使用Ckeditor实现图片上传功能。 **一、Ckeditor简介** Ckeditor是一款开源的JavaScript富文本编辑器,提供了丰富的编辑功能,如字体样式、颜色调整、图片插入等。它通过...
这个"ckeditorckeditor-视频-MP4上传插件"显然是专门为织梦(DedeCMS)设计的,目的是增强ckeditor的功能,使其能够支持MP4视频的上传和嵌入。MP4是一种常见的视频格式,由于其高效率和广泛的设备支持,常用于网页上...
本教程将详细介绍如何通过Servlet来实现CKEditor的文件上传功能。 首先,我们需要了解Servlet的概念。Servlet是Java服务器端程序,用于处理来自客户端(如浏览器)的请求并返回响应。在CKEditor的文件上传场景中,...
Drupal 是一个广泛使用的开源内容管理系统(CMS),而 CKEditor 是一款功能强大的富文本编辑器,常用于 Drupal 网站中以提供用户友好的文本编辑体验。"drupal-ckeditor-management" 模块是为了增强 Drupal 站点中 ...
- **插件系统**:CKEditor的可扩展性极强,通过插件可以添加更多功能,如公式编辑、代码高亮、PDF预览等。 - **语言支持**:内置多种语言包,满足不同地区用户的需求。 - **源码编辑**:用户可以直接查看和编辑...
CKEditor是一款广泛应用于Web开发中的强大富文本编辑器,它为用户提供了类似于Microsoft Word的界面,使得在网页上创建、编辑和格式化文本变得简单易行。这款编辑器以其丰富的功能、高度的可定制性和良好的跨浏览器...
然而,原版的CKEditor可能并不包含所有开发者或用户所需的功能,例如内置的图片上传功能。本教程将重点讲解如何为CKEditor添加自定义的图片上传功能,并提供相应的源代码。 首先,我们需要理解CKEditor的工作原理。...
- **丰富的编辑功能**:提供格式化、字体样式、字号调整、颜色选择、链接插入、图片上传、视频嵌入等多种编辑选项。 - **WYSIWYG(所见即所得)**:用户在编辑时看到的界面与最终发布的内容一致,提高用户体验。 ...