java fckeditor 上传图片_修改Fckeditor图片上传功能(java版)

本文介绍了如何针对Fckeditor 2.5版本的图片上传功能进行改造,解决中文乱码、上传Bug,并添加水印功能。通过创建新的Servlet和重写相关方法,将上传图片保存到服务器特定位置,避免工程下文件过大的问题,同时实现图片预览和水印添加功能。
摘要由CSDN通过智能技术生成

Fckeditor默认是带图片上传的功能 但是这不能满足我们的要求 比如说有的版本的Fckeditor有中文乱码的问题,我用的这个Fckediotr上传图片还有Bug,另外也没办法给图片加水印,传上去的图片还是放在工程下的将来会导致图片越来越庞大,怎么办呢? 我们自己动手丰衣足食,把fckeditor改造成我们需要的.

我用的Fckeditor的jar包是2.5版本的 这个版本图片没有中文乱码 另外如果有中文乱码的问题我建议也不要把图片名称改为UUID名称,因为当用户把自己的图片传上去的时候 想点浏览在去找这张图片的时候 他发现上面的那么多的名字根本分不清哪个是他这次传上来的.有人会问那图片名字重复了怎么办呢?Fckeditor已经考虑到这个问题了 他检测到服务器上有这个名字的图片他会自动重命名.废话不多说了我们来看我是怎么干的.

我们要解决的几个问题

1.上传图片放到服务器的一个物理位置而不是工程下.

2.解决Fckeditor2.5版本中图片上传 没有flush的问题

3.增加水印功能.

Fckeditor低版本的时候我们需要重写一个Servlet 但是我发现这个版本图片上传功能是放在一个类下的而不是

旧版本中的ConnectorServlet.那既然需要重写一个类 而这个类呢有是ConnectorServlet中调用的那我们是不是得先重写ConnectorServlet 然后在重写这个类,然后再把自己写的ConnectorServlet配置到web.xml中呢?不用那么麻烦我不是那样做的 看下图我是怎么做的 ,并请大家自己思考为什么可以这么做.

6d99592c6ea926f2ac52ea48b096cccd.png

我在工程下建了和fckeditor相同的包结构然后把我需要重写的类从Fckeditor源代码中拷了过来

好了 我们开始修改吧

Dispatcher.java中doPost方法

UploadResponse doPost(final HttpServletRequest request) {

logger.debug("Entering Dispatcher#doPost");

//String type = null;

Context context = ThreadLocalData.getContext();

context.logBaseParameters();

UploadResponse uploadResponse = null;

// check permissions for user actions

if (!RequestCycleHandler.isEnabledForFileUpload(request))

uploadResponse = UploadResponse.getFileUploadDisabledError();

// check parameters

else if (!Command.isValidForPost(context.getCommandStr()))

uploadResponse = UploadResponse.getInvalidCommandError();

else if (!ResourceType.isValidType(context.getTypeStr()))

uploadResponse = UploadResponse.getInvalidResourceTypeError();

else if (!UtilsFile.isValidPath(context.getCurrentFolderStr()))

uploadResponse = UploadResponse.getInvalidCurrentFolderError();

else {

// call the Connector#fileUpload

ResourceType type = context.getDefaultResourceType();

FileItemFactory factory = new DiskFileItemFactory();

ServletFileUpload upload = new ServletFileUpload(factory);

try {

List items = upload.parseRequest(request);

// We upload just one file at the same time

FileItem uplFile = items.get(0);

// Some browsers transfer the entire source path not just the

// filename

String fileName = FilenameUtils.getName(uplFile.getName());

logger.debug("Parameter NewFile: {}", fileName);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值