CKEditor添加上传图片java实现程序

html代码

 代码如下 复制代码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.ckeditor.CKEditorConfig" %>
<%@ page import="java.util.*" %>
<%@ taglib uri="http://ckeditor.com" prefix="ckeditor"%>
<!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">
<link type="text/css" rel="stylesheet" href="ckeditor/_samples/sample.css" />
<title>CKEditor Demo</title>
</head>
<body>

<form action="CKEditor" method="post">
    <p>
        <label for="editor1">Editor 1:</label>
        <textarea cols="80" id="editor1" name="editor1" rows="10"></textarea>
    </p>
    <p>
        <label for="editor2">Editor 2:</label>
        <%
                //String value = "My first <strong>CKEditor</strong> Java tag";
                String value = request.getParameter("editor2")==null?"":request.getAttribute("editor2").toString();
                Map<String, String> attr = new HashMap<String, String>();
                attr.put("rows", "8");
                attr.put("cols", "50");
                CKEditorConfig settings2 = new CKEditorConfig();
                //settings2.addConfigValue("width", "500");
                settings2.addConfigValue("toolbar", "Basic");
            %>
        <ckeditor:editor basePath="ckeditor/" textareaAttributes="<%=attr %>" config="<%=settings2 %>" editor="editor2" value="<%= value %>"/>
    </p>
    <p><input type="submit" value="Submit" /></p>
</form>
<%
    CKEditorConfig settings = new CKEditorConfig();
    settings.addConfigValue("filebrowserImageUploadUrl", "imageUpload.action?type=Image");//上传图片
    /*
    settings.addConfigValue("filebrowserUploadUrl", "imageUpload.action?type=File");// 上传文件
    settings.addConfigValue("filebrowserFlashUploadUrl", "imageUpload.action?type=Flash");//上传flash
    */
%>
<ckeditor:replace replace="editor1" basePath="ckeditor/" config="<%=settings %>" />
</body>
</html>

图片上传action主要代码

 代码如下 复制代码

public String execute() throws Exception {
        log.info("upload image...");
       
        if(upload != null) {
            ActionContext context = ActionContext.getContext();
            HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
            HttpServletResponse response = (HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE);
           
            String fileUrl = null;
            String CKEditorFuncNum = request.getParameter("CKEditorFuncNum");
           
            String scheme = request.getScheme();
            int port = request.getServerPort();
            String serverName = request.getServerName();
            String contextPath = request.getContextPath();
           
            /*重命名文件名称*/
            Calendar cal = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
            String type = uploadFileName.substring(uploadFileName.lastIndexOf("."));
            String newFileName = sdf.format(cal.getTime()) + type;
           
            String path = request.getSession().getServletContext().getRealPath("/");       
            File destFile = new File(path + UPLOAD_PATH + "/" + newFileName);   
            FileUtils.copyFile(upload, destFile);   
            log.info("上传图片成功。");
           
            fileUrl = UPLOAD_PATH + newFileName;
           
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            out = response.getWriter();
            fileUrl = scheme + "://" + serverName+":"+ port + contextPath + fileUrl;
            log.info("fileUrl:" + fileUrl);
           
            out.write("<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction("
                    + CKEditorFuncNum  + ",'" + fileUrl + "');</script>");
            out.flush();
            out.close();
           
        } else {
            log.info("未上传任何文件.");
        }   
        return SUCCESS;
    }

问题总结

图片上传成功了,但是没有跳转到到预览框里去,却在原先的页面显示出这段js代码:

 代码如下 复制代码

<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction(2,'/upload/commodity/20120406/201204061740421341.jpg', '');</script>

并没有执行。

我百思不得其解,后来通过火狐我发现返回的代码被转义了:

Javascript代码 

 代码如下 复制代码
&lt;script type='text/javascript'&gt;window.parent.CKEDITOR.tools.callFunction(2,/upload/commodity/20120406/201204061740421341.jpg', '');&lt;/script&gt;

问题虽是找到了,但一直不知如何解决,又经过几番琢磨,发现了问题,原来是在后台向前台输出脚本时,没有指定contentType格式,这样写就木有问题了:

Java代码 

 代码如下 复制代码

HttpServletResponse response = ServletActionContext.getResponse();
// 设置headers参数
String fullContentType = "text/html;charset=UTF-8";
response.setContentType(fullContentType);
out = response.getWriter();
out.write("<script  type='text/javascript'>window.parent.CKEDITOR.tools.callFunction(" + this.CKEditorFuncNum
             + ",'" + getUploadRootPath() + path + "/"
             + this.newImageFileNames[0] + "');</script>");

我勒个去,网上也没有相关资料,忧郁了我一个星期

时间: 2024-07-28 12:43:30

CKEditor添加上传图片java实现程序的相关文章

为您的Java应用程序添加退出事件处理

程序 一个完整的Java应用程序,通常至少要有一个应用程序的结束点.对于一般程序来说,系统开发者根据需要和个人的偏好,会在程序结束位置,通过添加System.exit(0),或System.out(-1),来结束程序,或不加这些指令,让程序自然运行到结束. 如:下列典型代码 package untitled14;/** * This application is to demo how an applcation end */public class Test { public Test() {

使用Java小程序为网页上的照片添加效果

程序|网页 1.准备源文件 选择要放置到网页上的照片,用扫描仪扫描得到照片的图像文件,再用PhotoShop等图像处理软件处理成大小为300×300象素的图像,最后保存为或者使用ACESee等图像查看软件转换为.jpg格式,保存到新建的文件夹photo中(注意千万别使用汉字为这个文件夹命名).现在假设这些照片图像分别为photo1.jpg.photo2.jpg.photo3.jpg.其中photo1.jpg为主要照片,photo2.jpg和photo3.jpg为辅助照片,最好选择不同时期的照片以

为Java应用程序添加退出事件响应

一个完整的Java应用程序,通常至少要有一个应用程序的结束点.对于一般程序来说,系统开发者根据需要和个人的偏好,会在程序结束位置,通过添加System.exit(0),或System.out(-1),来结束程序,或不加这些指令,让程序自然运行到结束. 如:下列典型代码 package untitled14; /** * This application is to demo how an applcation end */ public class Test { public Test() {}

网络编程-java聊天程序服务端多线程的添加问题。谢谢

问题描述 java聊天程序服务端多线程的添加问题.谢谢 现在服务器没有加多线程.打开一个客户端可以和服务器连接,第二个就连接不上了.是不是因为要给服务器添加多线程呢?怎么添加呢?谢谢(????`).我回头用电脑把服务端代码贴上来 解决方案 是socket吗, 把服务器从实例化一个socket到最后的代码 放到独立的线程中,在主方法中循环执行这个线程 解决方案二: 要加ID号码,并且用多线程编程 解决方案三: 这个跟服务器端是否是多线程没有关系.应该是你的服务器端处理不当导致的.

为Java应用程序添加退出事件响应_JSP编程

一个完整的Java应用程序,通常至少要有一个应用程序的结束点.对于一般程序来说,系统开发者根据需要和个人的偏好,会在程序结束位置,通过添加System.exit(0),或System.out(-1),来结束程序,或不加这些指令,让程序自然运行到结束. 如:下列典型代码 package untitled14; /** * This application is to demo how an applcation end */ public class Test { public Test() {}

windows 7-运行一个基于Java的程序总是要求管理员权限怎么办?

问题描述 运行一个基于Java的程序总是要求管理员权限怎么办? #我的操作系统是windows 7. 安装了一个叫**Geogebra**的几何作图软件.这个软件是用Java开发的开源软件. 之前使用一直是正常的,最近一段时候,突然发生了一系列的怪事: 比如一直用的Acrobat突然失效了,后来只好重新安装,用amtlib解决. 再就是重装Acrobat之后就偶然发现Geogebra不用管理员权限无法打开了,即使彻底卸载,清除注册表项,重新安装也没用:还尝试了它的portable版本,也是一样.

从Java应用程序动态生成PDF文件

pdf|程序|动态 如果应用程序需要动态生成 PDF 文档,则需要 iText 库.开放源码的 iText 库使 PDF 文档的创建能够在瞬间完成.本文介绍了 iText 并提供了使用它从 Java ? 技术应用程序生成 PDF 文档的由浅入深的指南.我们创建了一个示例应用程序以更好地理解 iText. 很多应用程序要求动态生成 PDF 文档.这类应用程序包括银行生成用于电子邮件投递的客户报表,到读者购买特定图书章节并以 PDF 格式接收这些文档.例子罗列下去是很多的.在本文中,将使用 iTex

将 Java 小程序迁移到 Microsoft J# 浏览器控件

程序|控件|浏览器 Visual J# .NET 小组 Microsoft Corporation 摘要:通过 Microsoft J# 浏览器控件,开发人员可以将所编写的在 Java 虚拟机上运行的 Java 小程序迁移到 .NET 框架.本文向开发人员介绍 J# 浏览器控件,并说明将 Java 小程序迁移到 .NET 框架的步骤.本文还讨论了其他一些主题,如 J# 浏览器控件的安全性和调试,以及当前版本中不受支持的功能. 下载 HTML 小程序到对象标记转换器 (95KB) 本文假设开发人员

如何从Java应用程序动态生成PDF文件

许多应用程序都要求动态生成 PDF 文档.这些应用程序涵盖从生成客户对帐单并通过电子邮件交付的银行到购买特定的 图书章节并以 PDF 格式接收这些图书章节的读者.这个列表不胜枚举.在本文中,我们将使用 iText Java 库生成 PDF 文 档.我们将向您演示一个样例应用程序,以便您可自行完成它并能更好地理解它. 熟悉 iText V5.3.0 版 iText 是一个可从 http://itextpdf.com/ 免费获取的 Java 库.iText 库非常强大,且支持生成 HTML.RTF