`
xuzengfei
  • 浏览: 1084 次
  • 性别: Icon_minigender_1
  • 来自: 中山
文章分类
社区版块
存档分类
最新评论

springMVC百度编辑器虚拟路径配置

阅读更多



 

在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);
  }

 
 修改到这里就已经完毕了。

 有什么不明白的或者漏掉的可以留言

 

分享到:
评论

相关推荐

    百度富文本编辑器和springMVC整合

    百度的UEditor是一款功能强大的富文本编辑器,它提供了丰富的编辑选项,包括字体设置、图片上传、表格插入等。在Java Web环境中,通常会结合SpringMVC框架来实现后端与前端的交互。下面我们将详细探讨如何将百度...

    springmvc 百度人脸识别登录

    facematch-springmvc 1.该项目是利用百度人脸识别接口模拟人脸识别登录 2.项目框架采用maven,springMVC 权限控制 3.后台解析接口返回参数 配置顺序 1 .先去百度人脸识别网站申请自己的项目获取key 2 . 配置...

    springMVC+Hibernate实现百度文本编辑器UEditor 1.2.6.2最新版本整合

    7. **集成UEditor**:在HTML页面中引入UEditor的JavaScript,设置编辑器的URL路径,并配置上传图片、文件的Action地址为之前创建的SpringMVC Controller的接口。 8. **测试与调试**:启动项目,通过浏览器访问编辑...

    SpringMVC配置拦截器实现登录控制的方法

    2. 配置拦截器:在SpringMVC配置文件中需要声明拦截器。使用标签来定义一个或多个拦截器。可以使用标签来指定拦截器,并通过来指定拦截器适用的URL模式。 3. Cookie与Session:在Web开发中,Cookie常用于在用户的...

    layui+springMvc富文本编辑器图片上传功能.rar

    标题 "layui+springMvc富文本编辑器图片上传功能.rar" 提供的是一个集成layui富文本编辑器与SpringMvc后台服务的图片上传解决方案。这个压缩包包含了一整套用于实现这一功能的代码和配置,适用于使用Java开发的Web...

    通过SpringMvc和百度AI实现人脸识别

    在本项目中,我们利用了SpringMvc框架...综上所述,此项目结合了SpringMvc的Web开发能力与百度AI的人脸识别技术,实现了基于人脸识别的用户注册和登录功能,同时充分利用了Web应用的目录结构和前端脚本来提升用户体验。

    springMVC拦截器项目

    在这个项目中,你可以了解到如何配置和使用拦截器,以及如何将它们集成到 SpringMVC 应用中。 1. **SpringMVC 概述**: SpringMVC 提供了一个模型-视图-控制器架构,用于处理 HTTP 请求和响应。它简化了 MVC 应用...

    SpringMVC指南 pdf 百度云链接

    根据提供的文件信息,“SpringMVC指南 pdf 百度云链接”这一标题与描述明确指出了文档的主题是关于SpringMVC的教程。SpringMVC作为Java Web开发领域内一个非常流行的框架,它基于Spring框架,主要负责处理Web层的...

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    1. 方案一通过在拦截器配置中排除特定的静态资源路径,可以比较精确地控制哪些请求被拦截器处理,哪些不处理。这种方法适合于静态资源和动态资源请求分得比较明确的情况。 2. 方案二通过利用默认的Servlet来处理...

    springMVC配置好的环境

    在“springMVC配置好的环境”中,我们通常包括了运行 Spring MVC 应用所需的所有组件和设置,这些组件可能包括但不限于: 1. **Spring Framework**:Spring 是整个应用的基础,它提供了依赖注入(DI)、面向切面...

    SpringMVC+mybatis+easyui+百度富文本编辑器+easyui三级弹窗+shiro权限框架

    UEditor是百度推出的一款开源的在线富文本编辑器,它提供了丰富的编辑功能,如文字编辑、图片上传、视频插入等。UEditor支持HTML5特性,可以方便地在网页上创建复杂的图文内容,常用于博客、论坛、CMS系统等,为用户...

    SpringMVC时间拦截器

    SpringMVC框架下对限定时间拦截(适用于初学者)

    SSM框架整合百度编辑器加前端框架

    1. 配置SSM框架:设置Spring、SpringMVC和MyBatis的相关配置文件,包括数据库连接、扫描包路径、Mapper配置等。 2. 创建模型类:根据数据库表结构定义对应的Java实体类,并添加相应的注解进行映射。 3. 编写Mapper...

    百度Ueditor整合springMVC+hibernate完整demo

    2. 配置SpringMVC:配置SpringMVC的DispatcherServlet,设置视图解析器,以及处理UEditor的上传请求。 3. 集成Hibernate:配置Hibernate的SessionFactory,创建实体类并编写对应的DAO层接口和实现,以处理数据操作...

    SpringMVC所有jar包和配置文件

    SpringMVC所有jar包和配置文件可以快速配置springmvc项目

    SpringMVC纯注解配置

    "SpringMVC纯注解配置"是SpringMVC框架的一种高级用法,旨在减少XML配置文件的使用,提高开发效率和代码可读性。在这个主题中,我们将深入探讨如何利用注解实现SpringMVC的配置以及jQuery如何处理后台返回的JSON对象...

    尚硅谷SpringMVC部分全套教学文档笔记

    - SpringMVC提供了MultipartFile接口处理文件上传,需要配置CommonsMultipartResolver解析器。 - 文件上传时,Controller方法需要接收MultipartFile类型的参数,并能处理上传错误和文件大小限制。 10. **异常处理...

    SpringMVC-配置文档

    SpringMVC-配置文档以及其中的说明。 包含使用注解、扫描带注解的包 、使用注解方式配置springMVC的映射器和适配器

    SpringMVC修改配置文件路径+给界面传递数据

    下面将详细介绍如何修改SpringMVC配置文件的路径。 首先,要改变配置文件的位置,我们需要更新`web.xml`文件。`web.xml`是Web应用程序的部署描述符,用于配置Servlet、Filter和监听器等。在`web.xml`中,找到`...

Global site tag (gtag.js) - Google Analytics