`
stephen830
  • 浏览: 3010175 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

step-by-step系列fckeditor结合smartupload实现可视化图文混排

    博客分类:
  • java
阅读更多
★★★ 本篇为原创,需要引用转载的朋友请注明:《 http://stephen830.iteye.com/blog/256174 》 谢谢支持! ★★★

前面写的2篇step-by-step的文章,浏览次数还是蛮可观的,说明还是有不少的朋友喜欢看的,为此我也感到很欣慰,以后,将继续推出技术类的step-by-step文章,分享知识,分享快乐。

在做B/S架构的项目(产品)中经常会遇到需要图文混排的地方,比如做1个文章发布模块,文章的文字和插图就是一个简单的图文混排,文字中可以插入多张图片,并且调整图片位置。

本篇就将详细的讲述如何通过jsp+java来实现这个图文混排。下面将要使用到的技术有2块:
(1)WEB编辑器:这里采用fckeditor,相信很多朋友都知道或者已经用过了,fckeditor官方网站为 [http://www.fckeditor.net/]
(2)文件上传类:这里采用smartupload,关于这一块不了解的朋友,可以看我的另一篇文章[上传下载组件SmartUpload使用方法 http://stephen830.iteye.com/admin/blogs/255010]

在开始下面的步骤之前,请先到文章的最后下载整个源程序 editor.zip ,解压后加到你的WEB项目中。

第1步:需要一个显示图文混排的html页面。(例子 example.html ,在editor.zip中已经包含了 \admin\example)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>图文混排</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../scripts/fckeditor/fckeditor.js"></script>
</head><body bgcolor="#FFFFFF" topmargin="50px" leftmargin="5px" rightmargin="5px">
<script>
window.onload = function()
{
	var oFCKeditor = new FCKeditor( 'co_body' ) ;//co_body 对应下面表单中的textarea组件
	oFCKeditor.BasePath	= "/bbyifu/admin/scripts/fckeditor/" ;//指定路径fckeditor在项目中的路径 根据自己的实际情况填写
	oFCKeditor.Width="560px";//fckeditor编辑器 宽度
	oFCKeditor.Height="280px";//fckeditor编辑器 高度
	oFCKeditor.ToolbarSet='Basic';//指定fckeditor编辑器显示的样子,定义在 \admin\scripts\fckeditor\fckconfig.js中的参数 FCKConfig.ToolbarSets["Basic"],你也可以自己重新定义
	oFCKeditor.ReplaceTextarea() ;//用fckeditor编辑器来替换表单中的textarea组件
}
</script>
<form method="post" name="frmSubmit">
<table width="100%" align="center" cellspacing="0" cellpadding="2" border="0">
<tr height="40"><td >(jsp+java)图文混排: fckeditor smartupload<div><textarea name="co_body"></textarea></div></td></tr>
<tr height="30"><td ><input type="submit" name="submit" class="buttonred" value="保存" onclick="alert('这个方法自己写');return false;"></td></tr>
</table>
</form>
</body></html>


第2步:需要一个显示进行文件上传的jsp页面。(例子 upload.jsp ,在editor.zip中已经包含了 \admin\scripts\fckeditor\editor\filemanager\upload\jsp\upload.jsp)

在这个jsp之前,确保在你的环境中已经把editor.zip包中src下的java文件加入你的项目中。

关于编辑器用什么进行上传,是在\admin\scripts\fckeditor\fckconfig.js中定义
可以定义上传的语言,上传脚本文件存放的位置,允许上传的文件类型
...
var _FileBrowserLanguage	= 'jsp' ;	// asp | aspx | cfm | lasso | perl | php | py
var _QuickUploadLanguage	= 'jsp' ;	// asp | aspx | cfm | lasso | php
...
FCKConfig.ImageUpload = true ;
FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/' + _QuickUploadLanguage + '/upload.' + _QuickUploadLanguage + '?Type=Image' ;
FCKConfig.ImageUploadAllowedExtensions	= ".(jpg|gif|jpeg|png)$" ;		// empty for all
FCKConfig.ImageUploadDeniedExtensions	= "" ;							// empty for no one
...


上传的jsp例子 upload.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="com.soft4j.httpupload4j.SmartUpload"%>
<%@ page import="com.soft4j.bo.AttachmentMgr"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>附件上传</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head><body>
<%
	String pageErrorInfo = null;
	String[] fileInfo = null;
	SmartUpload su = null;
	StringBuffer ret = new StringBuffer();
	try{
		su = new SmartUpload();
		su.initialize(pageContext);
		su.upload();
		fileInfo = AttachmentMgr.upload(su,pageContext);
		if(fileInfo!=null){//window.parent.OnUploadCompleted方法定义在[admin\scripts\fckeditor\editor\dialog\fck_image\fck_image.js]
			ret.append("<script type=\"text/javascript\">window.parent.OnUploadCompleted(0,'");
			ret.append(request.getContextPath());
			ret.append(fileInfo[0]);//file url
			ret.append("','");
			ret.append(fileInfo[1]);//file name
			ret.append("','');</script>");
			out.print(ret.toString()); 
		}
	}catch(Exception e){
		pageErrorInfo = e.getMessage();
	}finally{
		su = null;
		if(fileInfo==null){
			ret.append("<script type=\"text/javascript\">window.parent.OnUploadCompleted(1,'','','");
			ret.append(pageErrorInfo);
			ret.append("');</script>");
			out.print(ret.toString());
		}
		pageErrorInfo = null;
%>
		</body></html>
<%
	}
%>





第3步:需要一个配合jsp页面实现文件上传的java类。(例子 AttachmentMgr.java ,在editor.zip中已经包含了 src\com\soft4j\bo\AttachmentMgr.java)

/*
 * Created on 2005-6-12
 * Author stephen
 * Email zhoujianqiang AT gmail DOT com
 * CopyRight(C)2005-2008 , All rights reserved.
 */
package com.soft4j.bo;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
import java.util.Vector;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;
import com.soft4j.httpupload4j.SmartUpload;

/**
 * file upload.
 * 
 * @author stephen
 * @version 1.0.0
 */
public final class AttachmentMgr {

    public static String[] upload(SmartUpload su,PageContext pageContext) throws Exception {
        com.soft4j.httpupload4j.File suFile = null;
        StringBuffer attachFileName = null;
        int fileCount = 0;
        StringBuffer uploadPath = new StringBuffer();
        try {
        	String url = "";
        	String fileName = "";
            for (int i = 0; i < su.getFiles().getCount(); i++) {
                suFile = su.getFiles().getFile(i);
                if (suFile.isMissing())
                    continue;
                fileName=suFile.getFileName();
                url = "/admin/f/f5/"+fileName;///admin/f/f5/ 为存放上传文件的相对路径,请根据自己路径设置
                suFile.saveAs(URL,SmartUpload.SAVE_VIRTUAL);
            }
            return new String[]{url,fileName};
        } finally {
            //
        }
    }

}



当完成以上3步后,就可以开始测试了

通过http://你的web项目访问地址/example/example.html 就可以看到下面的界面了:


图1

点(图1)中红圈内的图片标记就会弹出下面的窗口:

图2

继续点(图2)红圈内的上传标记就会出现下面的界面:

图3

这时候,就可以点图3中的[浏览]按钮选择一个图片,然后点按钮[发送到服务器上]。上传成功后会有成功提示信息。最后不要忘记点右下角的[确定]按钮,这样就能把图片插入到文本框中。

如果你用的不是java也可以参考上面改成符合你的环境的,比如php,asp等。

附录:本篇涉及的文件的压缩包editor.zip

-------------------------------------------------------------
分享知识 分享快乐,希望文章能给需要的朋友带来小小的帮助。














  • 大小: 8.9 KB
  • 大小: 16.3 KB
  • 大小: 12.6 KB
5
0
分享到:
评论
4 楼 leeldy 2009-07-09  
非常感谢,真是解决了我的一大难题啊。。。
现在有个很SB的问题,用FCKeditor的时候,IE7提示FCKConfig未定义,但是不影响正常使用,不知道为什么。
3 楼 andybrier3 2008-10-24  
谢谢楼主分享!
2 楼 stephen830 2008-10-22  
toeo 写道

不错..最近正在研究这个ecitor编辑器呢..不知道这个文本编辑器能不能对excel的文件进行复制并且显示表格..要做的事情还是很多...


可以对excel内容进行复制的。
1 楼 toeo 2008-10-22  
不错..最近正在研究这个ecitor编辑器呢..
不知道这个文本编辑器能不能对excel的文件进行复制并且显示表格..

要做的事情还是很多...

相关推荐

    FCKeditor的相关资源fckeditor-java-2.6-bin,fckeditor-java-2.6-src,fckeditor-2.6.6

    2. **fckeditor-java-2.6-src**: 这是FCKeditor Java版的源代码包,对于开发者来说,源代码是理解其工作原理和进行定制化开发的重要参考资料。通过源代码,开发者可以查看内部函数实现,修改或扩展功能,以满足特定...

    FCKeditor文件上传漏洞及利用-File-Upload-Vulnerability-in-FCKEditor1

    【FCKeditor文件上传漏洞及利用 - File-Upload-Vulnerability-in-FCKEditor1】 本文主要探讨了FCKeditor(现称为CKeditor)中的PHP文件上传模块存在的安全漏洞,允许攻击者绕过文件类型检查,将恶意PHP代码上传到...

    fckeditor-java-2.4.1-src.zip_FCKeditor jsp_fckeditor-java_fcked

    总的来说,FCKeditor-java-2.4.1是一个强大的Web富文本编辑工具,对于Java Web开发者来说,它能帮助实现更高级、更美观的文本编辑功能,提升网站或应用程序的用户体验。通过学习和掌握其使用,开发者可以更加自如地...

    FCKEditor完整使用说明--一步步教你使用FCKeditor插件

    3. **上传文件**:FCKeditor默认不支持文件上传,但可以通过编写自定义的文件上传处理器来实现。 4. **预览与保存**:使用“预览”按钮查看编辑效果,编辑完成后,通过后台程序处理保存内容。 **三、常见问题与...

    fckeditor-java-demo-2.4.1.rar_DEMO_fckeditor_fckeditor demo_fcke

    1. 部署`fckeditor-java-demo-2.4.1.war`:将此WAR文件部署到Java应用服务器,按照服务器的配置说明进行操作,一般只需将其复制到服务器的webapps目录下,服务器会自动进行解压和启动。 2. 引入FCKeditor库:在Java...

    FCKeditor漏洞总结

    ### FCKeditor 漏洞总结 #### 一、概览 FCKeditor是一款非常流行的富文本编辑器,在很多网站中都有广泛的应用。然而,它的一些版本存在多种安全漏洞,这些漏洞可能导致各种安全问题,包括但不限于文件上传漏洞、...

    fckeditor-java_src.rar_FCKeditor-2.3_fckeditor_fckeditor s_opera

    FCKeditor支持当前流行的浏览器如IE,Firefox,Netscape,Opera等戏中的坦克所遇到的障碍物主要有墙、炸弹(泡泡)。坦克的所到之处都可以留下炸弹,炸弹会在一定时间内爆炸,一旦对手被炸到,你就赢了~

    FCKeditor_2.6.8.zip

    FCKeditor是一款开源的、基于Web的富文本编辑器,它允许用户在网页上进行类似Word的文本编辑操作,支持创建和编辑含有图文混合的内容。这个版本是2.6.8,是一个稳定且功能丰富的版本,为网站开发人员提供了方便的...

    fckeditor-java-2.6-bin

    在本例中,我们关注的是"Fckeditor-java-2.6-bin",这是一个针对Java平台的FCKeditor版本。这个版本的发布为开发者提供了在Java Web应用中集成富文本编辑功能的强大工具。 **FCKeditor的核心特性:** 1. **丰富的...

    FCKeditor_2.6.6.zip+fckeditor-java-2.4.1.rar

    FCKeditor_2.6.6.zip+fckeditor-java-2.4.1.rar+fckeditor-java-2.4.1-bin.zip+fckeditor-java-2.4-src.zip+fckeditor-java-demo-2.4.war.zip 分享几个包,让你学习有成。加油

    fckeditor-java-demo-2.5.war资源下载

    fckeditor2.5资源关于fckeditor-java-demo-2.5.war下载

    基于Java Web的HTML在线文本编辑器解决方案——以FckEditor在线编辑器为例.pdf

    FckEditor的优点包括轻量化、简单配置、免费开源、文本编辑功能齐全、支持多浏览器和多种编程语言。 知识点2:FckEditor在线编辑器在Java Web开发中的应用 --------------------------------------------- ...

    fckeditor-java-2.6 源代码 FCK

    fckeditor-java-2.6 源代码 FCK fckeditor-java-2.6 源代码 FCK fckeditor-java-2.6 源代码 FCK fckeditor-java-2.6 源代码 FCK

    FCKeditor一个可视化的HTML编译器

    **FCKeditor:一个强大的可视化HTML编辑器** FCKeditor是一款知名的开源富文本编辑器,它为用户提供了可视化的HTML编辑界面,使得非技术背景的人员也能轻松编辑和创建网页内容。这款编辑器最初由Felipe Borges开发...

    文本编辑器FCKeditor使用方法详解--图文详解

    【FCKeditor使用方法详解】 FCKeditor是一款强大的开源文本编辑器,主要用于在网页中创建和编辑富文本内容。它的功能强大,支持多种语言,并且提供了丰富的API供开发者进行自定义扩展。以下是对FCKeditor使用方法的...

    fckeditor-java-2.6-src

    源文件"fckeditor-java-2.6-src"包含了FCKeditor 2.6版本的Java源代码,这对于开发者来说是非常宝贵的资源。通过研究源代码,开发者可以深入理解其工作原理,自定义编辑器功能,或者解决在使用过程中遇到的问题。...

    FCKeditor结合extjs实例

    标题 "FCKeditor结合extjs实例" 描述的是一个实际项目中使用的技术组合,涉及到的主要是两个前端富文本编辑器库:FCKeditor 和 ExtJS。这个实例表明在开发企业级网站时,如何将这两者有效地整合以实现复杂的用户界面...

    PGV-Module-fckeditor-4.2

    《PGV-Module-fckeditor-4.2:深入解析网页编辑器FCKeditor 4.2在PGV模块中的应用》 在Web开发领域,内容管理系统(CMS)扮演着至关重要的角色,PGV(Personal Gallery Version)就是其中的一款。而FCKeditor,则是...

Global site tag (gtag.js) - Google Analytics