在springmvc那边如何将附件从web项目分离,参考了网上的一些资料,必需得修改百度编辑器jar的源码才能做到,也不能说改,只能做追加这样可以不破坏他的底层,我这里是用ueditor-1.1.1.jar,其他搞版本也差不多。针对虚拟路径配置然后自己做了下面修改 ,测试过没有问题
1.首先配置好文件上传路径的目录
我本地配置如下:springmvc-servlet.xml
<mvc:resources location="file:F:\\data\\\apache-tomcat-7.0.23\upload\\webschool\\" mapping="/fileupload/**" />
2.修改ueditor 的配置环境,打开百度编辑器config.json文件,有四个参数需要做配置:
imageUrlPrefix参数是界面读取时候的前缀路径,我这边是项目名+fileulpoad(这个是第一点那边配置的)
imageUsingVirtualPath 是否使用虚拟路径映射,设置为yes时开启
imageRealMappingPath 这就是虚拟路径 虚拟路径映射的实际物理目录,仅当imageUsingVirtualPath=yes时该配置有效
imagePathFormat 上传保存路径,旧的是用时间戳生成文件名,我这边改成uuid文件后缀名,这样不容易重复,保证文件唯一性
3 .修改ueditor-1.1.1.jar 的文件
1.ConfigManager中getConfig方修改如下
代码如下:
public Map<String, Object> getConfig(int type) { Map conf = new HashMap(); String savePath = null; boolean virtualPath = false; //是否使用虚拟路径映射 默认不使用 switch (type) { case 4: conf.put("isBase64", "false"); conf.put("maxSize", Long.valueOf(this.jsonConfig.getLong("fileMaxSize"))); conf.put("allowFiles", getArray("fileAllowFiles")); conf.put("fieldName", this.jsonConfig.getString("fileFieldName")); savePath = this.jsonConfig.getString("filePathFormat"); break; case 1: conf.put("isBase64", "false"); conf.put("maxSize", Long.valueOf(this.jsonConfig.getLong("imageMaxSize"))); conf.put("allowFiles", getArray("imageAllowFiles")); conf.put("fieldName", this.jsonConfig.getString("imageFieldName")); savePath = this.jsonConfig.getString("imagePathFormat"); //for virtual path mapping String imagePathFormat = this.jsonConfig.getString("imagePathFormat"); String imageUsingVirtualPath = this.jsonConfig.getString("imageUsingVirtualPath"); if("yes".equalsIgnoreCase(imageUsingVirtualPath)){ String imageRealMappingPath = this.jsonConfig.getString("imageRealMappingPath"); savePath = imageRealMappingPath + imagePathFormat; virtualPath = true; conf.put( "realMappingPath", imageRealMappingPath);//put into conf map using key=realMappingPath } break; case 3: conf.put("maxSize", Long.valueOf(this.jsonConfig.getLong("videoMaxSize"))); conf.put("allowFiles", getArray("videoAllowFiles")); conf.put("fieldName", this.jsonConfig.getString("videoFieldName")); savePath = this.jsonConfig.getString("videoPathFormat"); break; case 2: conf.put("filename", "scrawl"); conf.put("maxSize", Long.valueOf(this.jsonConfig.getLong("scrawlMaxSize"))); conf.put("fieldName", this.jsonConfig.getString("scrawlFieldName")); conf.put("isBase64", "true"); savePath = this.jsonConfig.getString("scrawlPathFormat"); break; case 5: conf.put("filename", "remote"); conf.put("filter", getArray("catcherLocalDomain")); conf.put("maxSize", Long.valueOf(this.jsonConfig.getLong("catcherMaxSize"))); conf.put("allowFiles", getArray("catcherAllowFiles")); conf.put("fieldName", this.jsonConfig.getString("catcherFieldName") + "[]"); savePath = this.jsonConfig.getString("catcherPathFormat"); break; case 7: conf.put("allowFiles", getArray("imageManagerAllowFiles")); conf.put("dir", this.jsonConfig.getString("imageManagerListPath")); conf.put("count", Integer.valueOf(this.jsonConfig.getInt("imageManagerListSize"))); break; case 6: conf.put("allowFiles", getArray("fileManagerAllowFiles")); conf.put("dir", this.jsonConfig.getString("fileManagerListPath")); conf.put("count", Integer.valueOf(this.jsonConfig.getInt("fileManagerListSize"))); } conf.put("savePath", savePath); conf.put("rootPath", this.rootPath); conf.put( "virtualPath", virtualPath );//add put return conf; }
2.PathFormat文件修改如下:
代码如下:
private static String getString(String pattern) { pattern = pattern.toLowerCase(); if (pattern.indexOf("time") != -1) return getTimestamp(); if (pattern.indexOf("yyyy") != -1) return getFullYear(); if (pattern.indexOf("yy") != -1) return getYear(); if (pattern.indexOf("mm") != -1) return getMonth(); if (pattern.indexOf("dd") != -1) return getDay(); if (pattern.indexOf("hh") != -1) return getHour(); if (pattern.indexOf("ii") != -1) return getMinute(); if (pattern.indexOf("ss") != -1) return getSecond(); if (pattern.indexOf("rand") != -1) { return getRandom(pattern); } if (pattern.indexOf("uuid") != -1 ) { return generate(); } return pattern; } public static String generate() { UUID uuid = UUID.randomUUID(); return uuid.toString().replaceAll("-", ""); }
3.BinaryUploader修改如下:
代码如下:
public static final State save(HttpServletRequest request, Map<String, Object> conf) { FileItemStream fileStream = null; boolean isAjaxUpload = request.getHeader("X_Requested_With") != null; if (!ServletFileUpload.isMultipartContent(request)) { return new BaseState(false, 5); } ServletFileUpload upload = new ServletFileUpload( new DiskFileItemFactory()); if (isAjaxUpload) { upload.setHeaderEncoding("UTF-8"); } try { FileItemIterator iterator = upload.getItemIterator(request); while (iterator.hasNext()) { fileStream = iterator.next(); if (!fileStream.isFormField()) break; fileStream = null; } if (fileStream == null) { return new BaseState(false, 7); } String savePath = (String)conf.get("savePath"); String originFileName = fileStream.getName(); String suffix = FileType.getSuffixByFilename(originFileName); originFileName = originFileName.substring(0, originFileName.length() - suffix.length()); savePath = savePath + suffix; long maxSize = ((Long)conf.get("maxSize")).longValue(); if (!validType(suffix, (String[])conf.get("allowFiles"))) { return new BaseState(false, 8); } boolean virtualPath = (Boolean)conf.get("virtualPath"); savePath = PathFormat.parse(savePath, originFileName); String physicalPath = (String)conf.get("rootPath") + savePath; //启用虚拟路径时,不再使用 rootPath if(virtualPath) { physicalPath = savePath; //此时savePath已含有实际的映射物理路径 } InputStream is = fileStream.openStream(); State storageState = StorageManager.saveFileByInputStream(is, physicalPath, maxSize); is.close(); if (storageState.isSuccess()) { storageState.putInfo("url", PathFormat.format(savePath)); //启动虚拟路径时,返回ue的url将不再携带realMappingPath,否则ue无法正常加载对应的已上传的图片/视频等 if(virtualPath){ String temp = (String) conf.get("realMappingPath"); storageState.putInfo("url", PathFormat.format(savePath.substring(temp.length()))); } storageState.putInfo("type", suffix); storageState.putInfo("original", originFileName + suffix); } return storageState; } catch (FileUploadException e) { return new BaseState(false, 6); } catch (IOException localIOException) { } return new BaseState(false, 4); }
修改到这里就已经完毕了。
有什么不明白的或者漏掉的可以留言
相关推荐
百度的UEditor是一款功能强大的富文本编辑器,它提供了丰富的编辑选项,包括字体设置、图片上传、表格插入等。在Java Web环境中,通常会结合SpringMVC框架来实现后端与前端的交互。下面我们将详细探讨如何将百度...
facematch-springmvc 1.该项目是利用百度人脸识别接口模拟人脸识别登录 2.项目框架采用maven,springMVC 权限控制 3.后台解析接口返回参数 配置顺序 1 .先去百度人脸识别网站申请自己的项目获取key 2 . 配置...
7. **集成UEditor**:在HTML页面中引入UEditor的JavaScript,设置编辑器的URL路径,并配置上传图片、文件的Action地址为之前创建的SpringMVC Controller的接口。 8. **测试与调试**:启动项目,通过浏览器访问编辑...
2. 配置拦截器:在SpringMVC配置文件中需要声明拦截器。使用标签来定义一个或多个拦截器。可以使用标签来指定拦截器,并通过来指定拦截器适用的URL模式。 3. Cookie与Session:在Web开发中,Cookie常用于在用户的...
标题 "layui+springMvc富文本编辑器图片上传功能.rar" 提供的是一个集成layui富文本编辑器与SpringMvc后台服务的图片上传解决方案。这个压缩包包含了一整套用于实现这一功能的代码和配置,适用于使用Java开发的Web...
在本项目中,我们利用了SpringMvc框架...综上所述,此项目结合了SpringMvc的Web开发能力与百度AI的人脸识别技术,实现了基于人脸识别的用户注册和登录功能,同时充分利用了Web应用的目录结构和前端脚本来提升用户体验。
在这个项目中,你可以了解到如何配置和使用拦截器,以及如何将它们集成到 SpringMVC 应用中。 1. **SpringMVC 概述**: SpringMVC 提供了一个模型-视图-控制器架构,用于处理 HTTP 请求和响应。它简化了 MVC 应用...
根据提供的文件信息,“SpringMVC指南 pdf 百度云链接”这一标题与描述明确指出了文档的主题是关于SpringMVC的教程。SpringMVC作为Java Web开发领域内一个非常流行的框架,它基于Spring框架,主要负责处理Web层的...
1. 方案一通过在拦截器配置中排除特定的静态资源路径,可以比较精确地控制哪些请求被拦截器处理,哪些不处理。这种方法适合于静态资源和动态资源请求分得比较明确的情况。 2. 方案二通过利用默认的Servlet来处理...
在“springMVC配置好的环境”中,我们通常包括了运行 Spring MVC 应用所需的所有组件和设置,这些组件可能包括但不限于: 1. **Spring Framework**:Spring 是整个应用的基础,它提供了依赖注入(DI)、面向切面...
UEditor是百度推出的一款开源的在线富文本编辑器,它提供了丰富的编辑功能,如文字编辑、图片上传、视频插入等。UEditor支持HTML5特性,可以方便地在网页上创建复杂的图文内容,常用于博客、论坛、CMS系统等,为用户...
SpringMVC框架下对限定时间拦截(适用于初学者)
1. 配置SSM框架:设置Spring、SpringMVC和MyBatis的相关配置文件,包括数据库连接、扫描包路径、Mapper配置等。 2. 创建模型类:根据数据库表结构定义对应的Java实体类,并添加相应的注解进行映射。 3. 编写Mapper...
2. 配置SpringMVC:配置SpringMVC的DispatcherServlet,设置视图解析器,以及处理UEditor的上传请求。 3. 集成Hibernate:配置Hibernate的SessionFactory,创建实体类并编写对应的DAO层接口和实现,以处理数据操作...
SpringMVC所有jar包和配置文件可以快速配置springmvc项目
"SpringMVC纯注解配置"是SpringMVC框架的一种高级用法,旨在减少XML配置文件的使用,提高开发效率和代码可读性。在这个主题中,我们将深入探讨如何利用注解实现SpringMVC的配置以及jQuery如何处理后台返回的JSON对象...
- SpringMVC提供了MultipartFile接口处理文件上传,需要配置CommonsMultipartResolver解析器。 - 文件上传时,Controller方法需要接收MultipartFile类型的参数,并能处理上传错误和文件大小限制。 10. **异常处理...
SpringMVC-配置文档以及其中的说明。 包含使用注解、扫描带注解的包 、使用注解方式配置springMVC的映射器和适配器
下面将详细介绍如何修改SpringMVC配置文件的路径。 首先,要改变配置文件的位置,我们需要更新`web.xml`文件。`web.xml`是Web应用程序的部署描述符,用于配置Servlet、Filter和监听器等。在`web.xml`中,找到`...