UEditor进阶:修改图片上传的方式(JSP版)

9 篇文章 1 订阅
当大家使用了UEditor之后,会发现其自带的图片上传方法只能存在项目当中,每当项目重新发布,之前的数据就无法自动保存。这个时候就需要我们修改图片上传方式,将图片保存在数据库或电脑的其他地方,从而解决这个问题。
如果大家研究的仔细的话,利用chrome浏览器F12中有一个Network功能,能看到一次加载的所有网址。当大家在进行图片上传时,UEditor会自动执行`controller.jsp?action=upload`这个方法。其实从config.json中也可以看出,其中有这么一句话:
 "imageActionName": "uploadimage", /* 执行上传图片的action名称 */

因此我们的思路就是让它不执行这个action,转而执行我们需要的action,解决方法如下:

1、jsp页面上需要修改的地方

在你的页面代码中应该有类似这样的话:
var ue = UE.getEditor('editor',{});
在下面加上:
UE.Editor.prototype._bkGetActionUrl=UE.Editor.prototype.getActionUrl;
        UE.Editor.prototype.getActionUrl=function(action){
            if (action == 'uploadimage'){
                return 'action';    /* 这里填上你自己的上传图片的action */
            }else{
                return this._bkGetActionUrl.call(this, action);
            }
        };

2、action的修改方法

先看一下官方开发文档给出的后端请求规范,里面有设计到uploadimage的传值规范:
![这里写图片描述](https://img-blog.csdn.net/20161116200623502)
因此,我们传值的必须包含state、url、title、original四个部分(state如果不是success的话,前端的报错信息就会显示state里包含的内容,因此大家在写的的时候可以在此注意)
我用的是SpingMVC框架,后端的处理是利用controller,返回值则是Map即可:
    @RequestMapping(value = "/action", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    @ResponseBody
    public Map<String,Object> save(HttpServletRequest req){
        Map<String,Object> rs = new HashMap<String, Object>();
        MultipartHttpServletRequest mReq  =  null;
        MultipartFile file = null;
        InputStream is = null ;
        String fileName = "";
        // 原始文件名   UEDITOR创建页面元素时的alt和title属性
        String originalFileName = "";
        String filePath = "";
        try {
            mReq = (MultipartHttpServletRequest)req;
            // 从config.json中取得上传文件的ID
            file = mReq.getFile("upfile");
            // 取得文件的原始文件名称
            fileName = file.getOriginalFilename();
            originalFileName = fileName;
            /*你的处理图片的代码*/
            rs.put("state", "SUCCESS");// UEDITOR的规则:不为SUCCESS则显示state的内容
            rs.put("url",icon);         //能访问到你现在图片的路径
            rs.put("title", originalFileName);
            rs.put("original", originalFileName);                       

        } catch (Exception e) {
            log.error(e.getMessage(),e);
            rs.put("state", "文件上传失败!"); //在此处写上错误提示信息,这样当错误的时候就会显示此信息
            rs.put("url","");
            rs.put("title", "");
            rs.put("original", "");
        }
        return rs;
    }

3、修改config.json

因为现在你的上传图片的方式已经改变了,并不是用UEditor原生自带的方式,因此需要修改将“imageUrlPrefix”设置为空,不需要任何前缀,你自己已经给出了url(如果你给出的url缺少前缀的话,可以继续在这里添加)。

至此便大功告成,如果大家还有什么问题,欢迎留言,大家可以一起讨论。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值