`
o4z7$001
  • 浏览: 1502 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

fck编辑器图片上传目录修改

阅读更多

FCK图片默认情况下上传到程序目录中,这样在重新发布应用程序的时候就有可能丢掉已经上传的图片文件,这里做了小小的修改,将数据和程序分开。

1.修改web.xml文件,添加查看图片文件的Servlet

	<servlet>
		<servlet-name>fckFileView</servlet-name>
		<servlet-class>
			com.fredck.FCKeditor.view.FckViewFileController
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping><!-- ”图像属性“页面预览 -->
	    <servlet-name>fckFileView</servlet-name>
	    <url-pattern>/fckeditor/editor/dialog/fck/fckViewFile</url-pattern>
	</servlet-mapping>
	<servlet-mapping><!-- fck编辑器内面显示图像 -->
	    <servlet-name>fckFileView</servlet-name>
	    <url-pattern>/fckeditor/fck/fckViewFile</url-pattern>
	</servlet-mapping>
	<servlet-mapping><!-- 提交后查看显示图像 -->
	    <servlet-name>fckFileView</servlet-name>
	    <url-pattern>/fck/fckViewFile</url-pattern>
	</servlet-mapping>

 

FCK原来是把ContextPath写死在代码中,我这里采用相对路径的方式来处理,所以将上面3个URL都映射到fckFileView上。
对与第3个映射,需要项目中url格式一致的支持,
http://localhost:8080/contextpath/modelname/url.do?...
如果不一致,则还要添加很多,因为使用的是相对路径,不过可以用正则表达式来实现。

 

2.修改文件/fckeditor/editor/filemanager/browser/default/frmresourceslist.html的OpenFile方法

将原来的window.top.opener.SetUrl( encodeURI( fileUrl ).replace( '#', '%23' ) ) ;
替换为新的URL,如下:
var url = "../fck/fckViewFile?method=view&encoder=URLEncoder&type=Image&filePath=" + encodeURI(encodeURI(fileUrl));
window.top.opener.SetUrl(url);

3.修改上传文件的Servlet:com.fredck.FCKeditor.uploader.SimpleUploaderServlet,将上传的文件保存到web发布目录外。

 

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	response.setContentType("text/html; charset=UTF-8");
	response.setHeader("Cache-Control", "no-cache");
	PrintWriter out = response.getWriter();

	String typeStr = request.getParameter("Type");

	String saveToFilePath = baseDir + typeStr;

	String retVal = "0";
	String newName = "";
	String fileUrl = "";
	String errorMessage = "";

	if (enabled) {
		DiskFileUpload upload = new DiskFileUpload();
		try {
			List items = upload.parseRequest(request);

			Map fields = new HashMap();

			Iterator 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 uplFile = (FileItem) fields.get("NewFile");
			String fileNameLong = uplFile.getName();
			fileNameLong = fileNameLong.replace('\\', '/');
			String[] pathParts = fileNameLong.split("/");
			String fileName = pathParts[pathParts.length - 1];

			String nameWithoutExt = getNameWithoutExtension(fileName);
			String ext = getExtension(fileName);
			File pathToSave = new File(saveToFilePath, fileName);
			fileUrl = "../fck/fckViewFile?method=view&encoder=URLEncoder&type=" + typeStr + "&filePath=";
			if (extIsAllowed(typeStr, ext)) {
				int counter = 1;
				while (pathToSave.exists()) {
					newName = nameWithoutExt + "(" + counter + ")" + "." + ext;
					retVal = "201";
					pathToSave = new File(saveToFilePath, newName);
					counter++;
				}
				uplFile.write(pathToSave);
				String filePathBase64 = getFilePath(fileName, newName, typeStr);
				fileUrl += filePathBase64;
			} else {
				retVal = "202";
				errorMessage = "";
				if (log.isDebugEnabled())
					log.debug("Invalid file type: " + ext);
			}
		} catch (Exception ex) {
			retVal = "203";
		}
	} else {
		retVal = "1";
		errorMessage = "This file uploader is disabled. Please check the WEB-INF/web.xml file";
	}

	out.println("<script type=\"text/javascript\">");
	out.println("window.parent.OnUploadCompleted(" + retVal + ",'" + fileUrl + "','" + newName + "','" + errorMessage + "');");
	out.println("</script>");
	out.flush();
	out.close();
}

 

4.修改浏览文件的Servlet:com.fredck.FCKeditor.connector.ConnectorServlet

 将doGet方法中的

Node root = CreateCommonXml(document, commandStr, typeStr, currentFolderStr, request.getContextPath() + currentPath);

 改为

Node root = CreateCommonXml(document, commandStr, typeStr, currentFolderStr, currentPath);

 

doPost方法也需要改动,修改文件的保存路径,去掉代码

String currentDirPath = getServletContext().getRealPath(currentPath);

 

5.添加查看文件的Servlet:com.fredck.FCKeditor.view.FckViewFileController

package com.fredck.FCKeditor.view;

import java.io.*;
import java.net.URLDecoder;

import javax.servlet.ServletException;
import javax.servlet.http.*;

import sun.misc.BASE64Decoder;

public class FckViewFileController extends HttpServlet {

	private static final long serialVersionUID = 5273052908966930616L;
	private static final BASE64Decoder decoder = new BASE64Decoder();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String filePath = req.getParameter("filePath");
		System.out.println(filePath);
		String encodeURL = req.getParameter("encoder");
		if ("URLEncoder".equals(encodeURL)) {
			filePath = decodeKeyWord(filePath);
		} else {
			filePath = new String(decoder.decodeBuffer(filePath));
		}
		InputStream ism = new FileInputStream(filePath);
		byte[] bytes = new byte[2048];
		int readLenGth = 0;
		OutputStream osm = resp.getOutputStream();
		while ((readLenGth = ism.read(bytes)) > 0) {
			osm.write(bytes, 0, readLenGth); // 向浏览器输出
		}
		osm.flush();
		//super.doPost(req, resp);
	}

	private String decodeKeyWord(String keyword) throws UnsupportedEncodingException {
		return URLDecoder.decode(keyword, "utf-8");
	}
}

 

  • FCKeditor-2.3.rar (15.4 KB)
  • 描述: 修改后的fck2.3的源代码
  • 下载次数: 24
分享到:
评论

相关推荐

    强大的FCK编辑器修改版兼容多个浏览器支持图片上传功能

    强大的FCK编辑器修改版兼容多个浏览器支持图片上传功能 绝对好用 下载即可用 有问题请联系我 QQ 451082729

    fck编辑器(调整工具栏,下拉宽度)

    修改菜单栏布局,调整工具栏下拉菜单宽度.不会上传,浏览文件发生错误...

    采用强大的FCK编辑器文章管理系统

    采用强大的FCK编辑器输入文章 3.不存在任何文章内容不能分段,不出空格的问题 4.可以直接复制任何图文信息,输出和原来格式一模一样 5.管理员密码采用多次MD5加密 6.支持图片新闻,无组件上传图片到数据库 7....

    好用的EWEBEDITOR编辑器 支持图片上传

    好用的EWEBEDITOR编辑器 支持图片上传 很好用 专心修改版 但是仅用于ie 火狐下不支持 如需要的话可以用fck兼容性很好 我也有序改版的 联系我 qq 451082729 让我们在学习中进步

    FCK加工版.net

    FCK修改了图片上传重命名,不会因为中文而乱码显示不出! 针对.NET版本

    ThinkPHP中FCKeditor编辑器的使用

    前段时间一直为TP寻找好用的在线编辑器而苦恼,经过多次尝试与修改后,终于成功地将编辑器集成到Thinkphp里面。 而且可以用直接上传和ajax两种方式处理内容。为了给一些还没能成功地集成fckeditor的同侪们一些启发与...

    FCKeditor编辑器Java版

    研究了两天,终于把FCK编辑器弄好了,解压导入MyEclipse即可运行,带中文过滤器。不过好像缺少servlet-api.jar,jsp-api.jar这两个jar包,从tomcata下考到项目的lib下即可。也把中文图片上传会产生乱码问题解决了,...

    小米2013模板改编辑器版

    更换原ECSHOP自带的fck编辑器,改为最好用的kindeditor,功能更加强大,可以同时批量上传图片,界面更美观。最新版的kindeditor,没有漏洞,不像FCK编辑器多年没更新。

    FCKEditor 一款开源的非常优秀的WEB在线编辑器

    FCKEditor 是一款开源的非常优秀的WEB在线编辑器,它的JS类库几乎匹敌于当前流行的JQuery,目前最新版本为2.65 .本文基于.Net的应用针对FCKEditor的源代码进行分析,同时改造了部分过于复杂的功能,将其简单化。供...

    FCKeditor 网页文本编辑器ASP.NET版

     4、编辑器域内默认的显示字体为12px,想要修改可以通过修改样式表来达到要求,打开/editor/css/fck_editorarea.css,修改font-size属性即可。如font-size: 14px;  5、关于安全性。  FCKConfig.ToolbarSets[...

    fckedit编辑器

    编辑器 FCKeditor2.4 使用说明 .下载 FCKeditor2.3 (FCKeditot for java) FCKeditor2.4 (FCKeditor基本文件) 以下是下载地址: http://www.fckeditor.net/download/default.html 2.建立项目: 建立项目tomcat...

    FCKeditor.jar 在线编辑器jar包

    解决fck上传中文乱码的问题 fck.jar包下载

    C9静态文章发布系统 v2.1.1.rar

    程序使用ASP ACC结构设计开发,供网友学习交流使用. 程序小巧主要为文章发布系统,可以为你组建一个信息发布网站. ...上传eweb目录 ,删除fck目录 覆盖cache/version.txt 文件. 覆盖admin目录,fun目录

    狂鸟文章管理系统程序

    2.采用强大的FCK编辑器输入文章 3.不存在任何文章内容不能分段,不出空格的问题 4.可以直接复制任何图文信息,输出和原来格式一模一样 5.管理员密码采用多次MD5加密 6.支持图片新闻,无组件上传图片到数据库 7.安装...

    FCKeditor2.65最终修正版(解决中文乱码)

    特点: 1.修改了文件上传命名方式。解决中文文件名上传与显示。 2.判断文件夹创建中的中文...3.优化整个编辑器的风格。把不必要的功能去除。 4.调用简单。 &lt;FCK:editor instanceName="content"&gt; &lt;/FCK:editor&gt;

    狂鸟文章管理系统源码

    采用强大的FCK编辑器输入文章 3.不存在任何文章内容不能分段,不出空格的问题 4.可以直接复制任何图文信息,输出和原来格式一模一样 5.管理员密码采用多次MD5加密 6.支持图片新闻,无组件上传图片到...

    PHP爱好者留言板 v2.0.rar

    鉴于FCK编辑器加载较慢,把htmlarea编辑器加进来 逻辑和界面分离,便于开发修改 php爱好者留言板v2.0 由心若水寒重写了大部分的代码,更有学习价值。 php爱好者留言板一开始就讲求对IE 和 firefox 浏览器的兼容。

    fckeditor使用手册

    fckeditor 在线编辑器,有需要的jar包,已对上传中文图片,文档的类进行了修改。 jsp要引用fck标签,文档中忘记写了 &lt;%@ taglib uri="http://java.fckeditor.net" prefix="FCK" %&gt; 在src 文件夹下建一个文件...

    PJBLOG3海神扩展增强版3.0.6.170

    可进行直接远程图片下载保存到空间指定目录下,默认保存路径为/attachments/img/,如需更改请打开/FCKeditor/editor/plugins/remoteupload/save.asp这个文件进行编辑,\u628aConfigSavePath='/attachments/img/'中的...

    FCKeditor使用指南

    3.4 适时打开编辑器 10 4 修改FCKeditor的配置: 11 4.1 方法一:修改fckconfig.js 文件 11 4.2 方法二:使用一个额外的配置文件覆盖默认配置 11 4.3 配置的加载顺序 11 4.4 提示 11 4.5 一般需要修改的配置项 11 ...

Global site tag (gtag.js) - Google Analytics