百度富文本Ueditor图片上传趟坑之路_ueditor 图片_小白找大神的博客-程序员宅基地

技术标签: struts2中的富文本  javaweb开发  jsp  ueditor图片不显示  ssh  Ueditor  

之所以写这片文章是自己在使用Ueditor当中,自己遇到的一些问题整理一下

1. 项目说明:使用Ueditor的项目是一个后台管理的项目,采用maven搭建的ssh框架另外添加了redis等组件,当中使用了struts2,对于struts2自身了解不深,所以导致踩坑有点多。
2. 问题一:使用Ueditor的时候出现后台配置未正常加载的情况。
这种情况通常是jar包未正常加载的原因。解决办法很简单,将jar包添加到项目当中。可能大家用的开发工具不一样,那么添加的方式也不一样,包括是否使用maven也影响添加jar包。具体怎么添加大家就自行百度一下,在这里主要说明如果是maven项目那么你要确认一下项目当中是否有下图前3个,如果有那么就不要再次添加了,一般情况只添加json.jar和ueditor.jar即可,然后运行项目便可以发现可以上传图片了
这里写图片描述
3. 问题二:后台配置正确后发现上传图片未找到上传数据。
产生这个的原因通常是被拦截器拦截了,当然大家可能都知道被拦截器拦截了。而且也有很多博客写到,自己自定义拦截器就好了。对这是一种方法,但是大家在开发过程中通常用的是公司框架。那我们便不能自定义拦截器,只需要去修改配置文件即可。这个项目是maven构建的ssh框架,未找到上传数据的原因是被struts拦截了数据。我们找到struts的配置文件,我这个项目是在resources下的struts.xml。打开这个xml文件,在xml文件当中找不设置拦截的模块,当然有可能没有注释说明那就有点尴尬只能慢慢看,或者去询问一下搭建框架的人。通常项目当中都设置了一些不需要拦截的东西,耐心看看就好了。
如下图,这是我们的拦截器配置,在其后面追加/resources/ueditor/.*意思就是讲不拦截ueditor下的内容
这里写图片描述

经过一上的设置一般情况下应该是可以正常上传,并显示了,如果你们的程序员又对ueditor进行了封装,或者做了别的处理那就另讲了。
这里我做的这个出现了一个神奇的问题,说自己经验不足把没有找到根本原因,但是通过了别的方法解决了这个问题,大家就看看就好。

4. 问题三:经过上面步骤图片能上传了,但是突然发现无法加载出来,现象如下
这里写图片描述
然后立马按了F12,查看路径
http://localhost:8080/upload/ueditor/image/20180703/1530581900671060588.png
好像有点问题,查看自己配置文件如下图:
这里写图片描述
what?什么鬼,怎么会突然多了一个upload这个路径,果断在网页中先去掉upload,发现能够正常显示。
这里写图片描述
这upload哪里来的,不知道,全局检索吧,检索了依旧没找到,既然不能从源头解决那就从过程解决了。
图片上传有两个,一个是单图,一个是多图。我们百度一下Ueditor的源码讲解,稍微了解一下怎么显示的,我对往前台加载图片的时候动了刀子,既然找不到源头,那我就替换掉一个好了。
首先我们找到ueditor.all.js,上传图片完毕之后就是通过这个js文件进行加载的图片,
对于单图来讲在代码的22219行
这里写图片描述
我们可以看到有一个callback方法用来加载数据,json就是上传之后返回来的数据。
link则代表你的url,在link放入loader之前,我把”/upload”替换成了空,用的是replace而不是replaceAll,之所以用第一个是考虑认为把上传路径加上“/upload”,用第二个会替换掉全部。然后我们上传单图发现,咦显示了,但是明显高兴的太早。
点击多图上传之后依旧没有显示图片,然后再找代码,在代码的9996行,
这里写图片描述
这是默认加载图片处理方式,同样的操作我们将其中src替换一下,然后在点击上传发现多图也正常显示了。
注意注意:如果说大家也碰到这种问题,我个人建议源头上解决这种问题,但是实际我没有找到为什么会多,因此我采用了这用方式,但是这样也可能会造成别的影响,实在找不到再采用这种问题,这个问题我百度好久也没有找到为什么,所以投机取巧了。另外把我的项目配置贴一下图,如果有了解的大佬请告诉我这个小菜鸟为什么会多一个”/upload”!!!万分感谢!!!

ueditor配置如下:

config.json
这里写图片描述
ueditor.config.js
这里写图片描述
controller.jsp
这里写图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/youzi749/article/details/80894329

智能推荐

java代码实现生成二维码和条形码_java生成二维码和条形码-程序员宅基地

在做开发过程中,我们常常会需要使用Java代码来生成一些二维码图片和条形码图片,例如: 新闻页面,商品页面,货品的条码等等。今天就来简单介绍下如何使用Java代码生成开发中需求二维码图片和条形码图片。 1.生成和解析二维码图片 如果是maven工程 在pom文件中加入依赖如下: com.google.z_java生成二维码和条形码

jvm_note_01_cafebaby java-程序员宅基地

java编码至执行#mermaid-svg-wV542anvXT8N0huH .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-wV542anvXT8N0huH .label text{fill:#333}#mermaid-svg-wV542anvXT8N0huH .node rect,#mermaid-svg-_cafebaby java

nginx笔记-程序员宅基地

nginx的安装下载地址: http://nginx.org/download/nginx-1.4.2.tar.gz 安装准备: nginx依赖于pcre库,要先安装pcreyum install pcre pcre-devel cd /usr/local/src/ wgethttp://nginx.org/download/nginx-1.4.2.tar.gztar zxvf nginx-1....

结构体定义-程序员宅基地

一、结构体变量的定义:1.声明一个结构体模板;格式:struct 结构体名{数据类型 成员1的名字;数据类型 成员2的名字;······数据类型 成员n的名字;};结构体的名字,称为结构体标签,作为用户自定义的结构体类型的标志,用于与其他结构体类型相区别。构成结构体的变量,称为结构体成员。如:struct student{long stud...

MySQL基础知识总结二_比奇堡的收银员的博客-程序员宅基地

1.distinct去重select distinct 字段1,字段2...from 表名;注意:distinct只能出现在所以字段的最前面。2.liang

从0开始的技美实战(十八)_sd ao最终输出节点-程序员宅基地

本篇主要用于记录自己的实战操作,以及一些碎碎念(观后感),如果有什么好想法或者本篇出现什么错误,请多指教~本篇的内容参考视频:庄懂的技术美术入门课(美术向)使用软件:Unity 2019 3.6f1 ,ShaderForge本篇内容主要包括:赛博小人制作及相关知识点总结;1.模型准备首先还是先对顶点着色,以便之后仅对身体产生变换;再来导出两份UV,左边是叠加的,右边是整理好的;为了得到网格效果,专门渲染一张纯黑白的网格图,然后右边的图则是在Alpha通道里用于UV分块2.SD中准_sd ao最终输出节点

随便推点

tinyproxy代理服务器配置_tinyproxy最新配置文件-程序员宅基地

应用场景:有些公司为了达到服务器网络安全,常常去掉公网IP只是保留内网互通,通过拨VPN连接公司内网、代理上网,但是服务器有时会有上网请求,需要通过代理上网获取信息,下面介绍一个代理软件。 tinyproxy是一款轻量级的http/https代理软件,可以满足小规模的代理上网请求安装centos安装 yum install tinyproxyUbuntu安装 apt-get in..._tinyproxy最新配置文件

使用pagehelper为自定义sql实现分页_pagehelper sql怎么写-程序员宅基地

最近有需求需要自己手写sql查询数据库,并且分页 <dependency> <groupId>com.github.pagehelper&a_pagehelper sql怎么写

arcgis engine 打开gdb_arcengine打开gdb_醉生浮屠的博客-程序员宅基地

//打开gdb IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); IWorkspace workspace = workspaceFactory.OpenFromFile("e:\\数据\\data.gdb", 0); IFeatureWorkspace featureWorkspace = (IFeatureWork..._arcengine打开gdb

模式匹配-程序员宅基地

从面向对象的观点来看,最好总是使用具体的类型和接口来解决问题。然而,通常这并不容易做到。在数据库中,查询可能会给出与任何层次结构都无关的不同对象类型。访问API服务时,可以返回一个列表或对象,或者可能什么也不返回。因此,方法通常应该与不同的类型一起工作。这就是模式匹配可以提供帮助的地方。例如,下面创建了一个不同对象的数组。在这个名为data的数组中,第一个元素是null,其后是值为42的整数、..._模式匹配

c++虚函数:父类与子类虚函数的形参不一样会发生什么?_虚函数参数可以不一样吗_Be long的博客-程序员宅基地

摘抄,部分关于虚函数的总结如果以一个基础类指针指向一个衍生类对象(派生类对象),那么经由该指针只能访问基础类定义的函数(静态联编)如果以一个衍生类指针指向一个基础类对象,必须先做强制转型动作(explicit cast),这种做法很危险,也不符合语法习惯,在程序设计上也会给程序员带来困扰。(一般不会这么去定义)如果基础类和衍生类定义了相同名称的成员函数(包括参数相同),那么通过对象指针调用成员函数时,到底调用那个函数要根据指针的原型来确定,而不是根据指针实际指向的对象类型确定。虚函数就是为了对._虚函数参数可以不一样吗

算法:用递归方法求数组中的最大值_命名空间 内部函数-程序员宅基地

用递归方法求数组中的最大值_命名空间 内部函数