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");
}
}
分享到:
相关推荐
强大的FCK编辑器修改版兼容多个浏览器支持图片上传功能 绝对好用 下载即可用 有问题请联系我 QQ 451082729
修改菜单栏布局,调整工具栏下拉菜单宽度.不会上传,浏览文件发生错误...
采用强大的FCK编辑器输入文章 3.不存在任何文章内容不能分段,不出空格的问题 4.可以直接复制任何图文信息,输出和原来格式一模一样 5.管理员密码采用多次MD5加密 6.支持图片新闻,无组件上传图片到数据库 7....
好用的EWEBEDITOR编辑器 支持图片上传 很好用 专心修改版 但是仅用于ie 火狐下不支持 如需要的话可以用fck兼容性很好 我也有序改版的 联系我 qq 451082729 让我们在学习中进步
FCK修改了图片上传重命名,不会因为中文而乱码显示不出! 针对.NET版本
前段时间一直为TP寻找好用的在线编辑器而苦恼,经过多次尝试与修改后,终于成功地将编辑器集成到Thinkphp里面。 而且可以用直接上传和ajax两种方式处理内容。为了给一些还没能成功地集成fckeditor的同侪们一些启发与...
研究了两天,终于把FCK编辑器弄好了,解压导入MyEclipse即可运行,带中文过滤器。不过好像缺少servlet-api.jar,jsp-api.jar这两个jar包,从tomcata下考到项目的lib下即可。也把中文图片上传会产生乱码问题解决了,...
更换原ECSHOP自带的fck编辑器,改为最好用的kindeditor,功能更加强大,可以同时批量上传图片,界面更美观。最新版的kindeditor,没有漏洞,不像FCK编辑器多年没更新。
FCKEditor 是一款开源的非常优秀的WEB在线编辑器,它的JS类库几乎匹敌于当前流行的JQuery,目前最新版本为2.65 .本文基于.Net的应用针对FCKEditor的源代码进行分析,同时改造了部分过于复杂的功能,将其简单化。供...
4、编辑器域内默认的显示字体为12px,想要修改可以通过修改样式表来达到要求,打开/editor/css/fck_editorarea.css,修改font-size属性即可。如font-size: 14px; 5、关于安全性。 FCKConfig.ToolbarSets[...
编辑器 FCKeditor2.4 使用说明 .下载 FCKeditor2.3 (FCKeditot for java) FCKeditor2.4 (FCKeditor基本文件) 以下是下载地址: http://www.fckeditor.net/download/default.html 2.建立项目: 建立项目tomcat...
解决fck上传中文乱码的问题 fck.jar包下载
程序使用ASP ACC结构设计开发,供网友学习交流使用. 程序小巧主要为文章发布系统,可以为你组建一个信息发布网站. ...上传eweb目录 ,删除fck目录 覆盖cache/version.txt 文件. 覆盖admin目录,fun目录
2.采用强大的FCK编辑器输入文章 3.不存在任何文章内容不能分段,不出空格的问题 4.可以直接复制任何图文信息,输出和原来格式一模一样 5.管理员密码采用多次MD5加密 6.支持图片新闻,无组件上传图片到数据库 7.安装...
特点: 1.修改了文件上传命名方式。解决中文文件名上传与显示。 2.判断文件夹创建中的中文...3.优化整个编辑器的风格。把不必要的功能去除。 4.调用简单。 <FCK:editor instanceName="content"> </FCK:editor>
采用强大的FCK编辑器输入文章 3.不存在任何文章内容不能分段,不出空格的问题 4.可以直接复制任何图文信息,输出和原来格式一模一样 5.管理员密码采用多次MD5加密 6.支持图片新闻,无组件上传图片到...
鉴于FCK编辑器加载较慢,把htmlarea编辑器加进来 逻辑和界面分离,便于开发修改 php爱好者留言板v2.0 由心若水寒重写了大部分的代码,更有学习价值。 php爱好者留言板一开始就讲求对IE 和 firefox 浏览器的兼容。
fckeditor 在线编辑器,有需要的jar包,已对上传中文图片,文档的类进行了修改。 jsp要引用fck标签,文档中忘记写了 <%@ taglib uri="http://java.fckeditor.net" prefix="FCK" %> 在src 文件夹下建一个文件...
可进行直接远程图片下载保存到空间指定目录下,默认保存路径为/attachments/img/,如需更改请打开/FCKeditor/editor/plugins/remoteupload/save.asp这个文件进行编辑,\u628aConfigSavePath='/attachments/img/'中的...
3.4 适时打开编辑器 10 4 修改FCKeditor的配置: 11 4.1 方法一:修改fckconfig.js 文件 11 4.2 方法二:使用一个额外的配置文件覆盖默认配置 11 4.3 配置的加载顺序 11 4.4 提示 11 4.5 一般需要修改的配置项 11 ...