近来用的百度富文本,有点小上火,图片默认传到项目下,这是非常不合理的,找了很多不好使,最后还是解决了,下边给大家分享下过程,本人用的ssm,其他框架原理基本相似。
小编纯手工编写,转载请声明出处,谢谢。。。。。。。。。。。。。。。。。。。
需要克服的两个问题:
1.拦截上传的请求,将上传图片的请求发送至自己的类;
2.模拟上传成功后返回的数据格式,以便百度富文本识别、图片预览等一系列操作;
前提条件:图片能上传至本项目下,否则就不必往下看了
下边进入正文:
1.首先建立实体类 Ueditor,用于上传成功后返回富文本的数据格式
public class Ueditor {
private String state; //状态
private String url; //上传url
private String title; //图片标题
private String original;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getOriginal() {
return original;
}
public void setOriginal(String original) {
this.original = original;
}
}
2.创建 PublicMsg 类或在 Ueditor 中加上即可,此类 UEDITOR_CONFIG 属性为富文本的配置信息,内容等同于
/ueditor/jsp/config.json 的配置
public class PublicMsg {
public final static String UEDITOR_CONFIG = "{\"videoMaxSize\":102400000, \"videoActionName\":\"uploadvideo\",\"fileActionName\":\"uploadfile\",\"fileManagerListPath\":\"/ueditor/jsp/upload/file/\",\"imageCompressBorder\":1600,\"imageManagerAllowFiles\":[\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\"],\"imageManagerListPath\":\"/ueditor/jsp/upload/image/\",\"fileMaxSize\":51200000,\"fileManagerAllowFiles\":[\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\",\".flv\",\".swf\",\".mkv\",\".avi\",\".rm\",\".rmvb\",\".mpeg\",\".mpg\",\".ogg\",\".ogv\",\".mov\",\".wmv\",\".mp4\",\".webm\",\".mp3\",\".wav\",\".mid\",\".rar\",\".zip\",\".tar\",\".gz\",\".7z\",\".bz2\",\".cab\",\".iso\",\".doc\",\".docx\",\".xls\",\".xlsx\",\".ppt\",\".pptx\",\".pdf\",\".txt\",\".md\",\".xml\"],\"fileManagerActionName\":\"listfile\",\"snapscreenInsertAlign\":\"none\",\"scrawlActionName\":\"uploadscrawl\",\"videoFieldName\":\"upfile\",\"imageCompressEnable\":true,\"videoUrlPrefix\":\"\",\"fileManagerUrlPrefix\":\"\",\"catcherAllowFiles\":[\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\"],\"imageManagerActionName\":\"listimage\",\"snapscreenPathFormat\":\"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",\"scrawlPathFormat\":\"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",\"scrawlMaxSize\":2048000,\"imageInsertAlign\":\"none\",\"catcherPathFormat\":\"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",\"catcherMaxSize\":2048000,\"snapscreenUrlPrefix\":\"\",\"imagePathFormat\":\"/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}\",\"imageManagerUrlPrefix\":\"\",\"scrawlUrlPrefix\":\"\",\"scrawlFieldName\":\"upfile\",\"imageMaxSize\":2048000,\"imageAllowFiles\":[\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\"],\"snapscreenActionName\":\"uploadimage\",\"catcherActionName\":\"catchimage\",\"fileFieldName\":\"upfile\",\"fileUrlPrefix\":\"\",\"imageManagerInsertAlign\":\"none\",\"catcherLocalDomain\":[\"127.0.0.1\",\"localhost\",\"img.baidu.com\"],\"filePathFormat\":\"/ueditor/jsp/upload/file/{yyyy}{mm}{dd}/{time}{rand:6}\",\"videoPathFormat\":\"/ueditor/jsp/upload/video/{yyyy}{mm}{dd}/{time}{rand:6}\",\"fileManagerListSize\":20,\"imageActionName\":\"ueditor\",\"imageFieldName\":\"upfile\",\"imageUrlPrefix\":\"http://47.92.220.225:8080\",\"scrawlInsertAlign\":\"none\",\"fileAllowFiles\":[\".png\",\".jpg\",\".jpeg\",\".gif\",\".bmp\",\".flv\",\".swf\",\".mkv\",\".avi\",\".rm\",\".rmvb\",\".mpeg\",\".mpg\",\".ogg\",\".ogv\",\".mov\",\".wmv\",\".mp4\",\".webm\",\".mp3\",\".wav\",\".mid\",\".rar\",\".zip\",\".tar\",\".gz\",\".7z\",\".bz2\",\".cab\",\".iso\",\".doc\",\".docx\",\".xls\",\".xlsx\",\".ppt\",\".pptx\",\".pdf\",\".txt\",\".md\",\".xml\"],\"catcherUrlPrefix\":\"\",\"imageManagerListSize\":20,\"catcherFieldName\":\"source\",\"videoAllowFiles\":[\".flv\",\".swf\",\".mkv\",\".avi\",\".rm\",\".rmvb\",\".mpeg\",\".mpg\",\".ogg\",\".ogv\",\".mov\",\".wmv\",\".mp4\",\".webm\",\".mp3\",\".wav\",\".mid\"]}";
/**
* Ueditor的返回状态类型
*/
public enum UeditorMsg{
SUCCESS("SUCCESS"),ERROR("上传失败");
private String v;
UeditorMsg(String v){
this.v =v;
}
public String get(){
return this.v;
}
}
}
3.自己上传图片的逻辑,注意里边的if 判断多次请求,参数不同走的逻辑不一样,参数param=config ,是加载配置,upfile!=null 才是上传文件
@SuppressWarnings("unused")
@RequestMapping(value="/ueditor")
@ResponseBody
public JSONObject ueditor(@RequestParam("action") String param,HttpServletRequest request) {
//判断图片是否存在
MultipartFile upfile=null;
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if(multipartResolver.isMultipart(request)){
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
upfile = multiRequest.getFileMap().get("upfile");
}
Ueditor ueditor = new Ueditor();
if(param!=null¶m.equals("config")){
//加载富文本的配置信息,参照图二
return JSONObject.parseObject(PublicMsg.UEDITOR_CONFIG);
}else if(param!=null){
if(upfile!=null){
//真正的上传,本人用的sftp ,可根据自己项目的业务,这时候就可以后台控制了
//{state:”数据状态信息”,url:”图片回显路径”,title:”文件title”,original:”文件名称”,···}
return sftp.baiduEditUpload(upfile, "/test_video");
}else{
ueditor.setState("文件为空");
return JSONObject.parseObject(ueditor.toString());
}
}else{
ueditor.setState("不支持该操作");
return JSONObject.parseObject(ueditor.toString());
}
}
4. 富文本 /ueditor/ueditor.config.js 的默认配置
5.更改 /ueditor/ueditor.config.js (本人的),也就是指向图3 的方法,这时候图片上传就不走 controller.jsp了
6.此时就可以完整收官了,注意封装上传成功与否的数据格式,否则会出问题
如果解决了您的问题,请留下一个赞,这是对小编的最好鼓励,谢谢