`
fackyou200
  • 浏览: 312487 次
  • 性别: Icon_minigender_1
  • 来自: 山西太原
社区版块
存档分类
最新评论

ueditor编辑器图片上传路径问题

阅读更多

第一部:修改jsp/config.json文件

   访问前缀:#basePath#

   pathFormat:uploads前面添加“/”斜杠

 

/* 前后端通信相关的配置,注释只允许使用多行方式 */
{
    /* 上传图片配置项 */
    "imageActionName": "uploadimage", /* 执行上传图片的action名称 */
    "imageFieldName": "upfile", /* 提交的图片表单名称 */
    "imageMaxSize": 2048000, /* 上传大小限制,单位B */
    "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
    "imageCompressEnable": true, /* 是否压缩图片,默认是true */
    "imageCompressBorder": 1600, /* 图片压缩最长边限制 */
    "imageInsertAlign": "none", /* 插入的图片浮动方式 */
    "imageUrlPrefix": "#basePath#", /* 图片访问路径前缀 */
    "imagePathFormat": "/uploads/ue/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
                                /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */
                                /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */
                                /* {time} 会替换成时间戳 */
                                /* {yyyy} 会替换成四位年份 */
                                /* {yy} 会替换成两位年份 */
                                /* {mm} 会替换成两位月份 */
                                /* {dd} 会替换成两位日期 */
                                /* {hh} 会替换成两位小时 */
                                /* {ii} 会替换成两位分钟 */
                                /* {ss} 会替换成两位秒 */
                                /* 非法字符 \ : * ? " < > | */
                                /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */

    /* 涂鸦图片上传配置项 */
    "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
    "scrawlFieldName": "upfile", /* 提交的图片表单名称 */
    "scrawlPathFormat": "/uploads/ue/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
    "scrawlUrlPrefix": "#basePath#", /* 图片访问路径前缀 */
    "scrawlInsertAlign": "none",

    /* 截图工具上传 */
    "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
    "snapscreenPathFormat": "/uploads/ue/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "snapscreenUrlPrefix": "#basePath#", /* 图片访问路径前缀 */
    "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */

    /* 抓取远程图片配置 */
    "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
    "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
    "catcherFieldName": "source", /* 提交的图片列表表单名称 */
    "catcherPathFormat": "/uploads/ue/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "catcherUrlPrefix": "#basePath#", /* 图片访问路径前缀 */
    "catcherMaxSize": 2048000, /* 上传大小限制,单位B */
    "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */

    /* 上传视频配置 */
    "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
    "videoFieldName": "upfile", /* 提交的视频表单名称 */
    "videoPathFormat": "/uploads/ue/video/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "videoUrlPrefix": "#basePath#", /* 视频访问路径前缀 */
    "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
    "videoAllowFiles": [
        ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
        ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */

    /* 上传文件配置 */
    "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
    "fileFieldName": "upfile", /* 提交的文件表单名称 */
    "filePathFormat": "/uploads/ue/file/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
    "fileUrlPrefix":"#basePath#", /* 文件访问路径前缀 */
    "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
    "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"
    ], /* 上传文件格式显示 */

    /* 列出指定目录下的图片 */
    "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
    "imageManagerListPath": "/uploads/ue/image/", /* 指定要列出图片的目录 */
    "imageManagerListSize": 20, /* 每次列出文件数量 */
    "imageManagerUrlPrefix": "#basePath#", /* 图片访问路径前缀 */
    "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
    "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */

    /* 列出指定目录下的文件 */
    "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
    "fileManagerListPath": "/uploads/ue/file/", /* 指定要列出文件的目录 */
    "fileManagerUrlPrefix": "#basePath#", /* 文件访问路径前缀 */
    "fileManagerListSize": 20, /* 每次列出文件数量 */
    "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"
    ] /* 列出的文件类型 */

}

 

第二部:添加路径配置

  

##ueditor编辑器
ueditor.url.base=http://localhost:8080/app

 第三部:替换原来的jar

    ueditor-1.1.1.jar替换ueditor-custom-1.1.1.jar

 

源码修改:

package com.baidu.ueditor;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;
import org.json.JSONArray;
import org.json.JSONObject;

public final class ConfigManager
{
  private final String rootPath;
  private final String originalPath;
  private final String contextPath;
  private static final String configFileName = "config.json";
  private String parentPath = null;
  private JSONObject jsonConfig = null;
  private static final String SCRAWL_FILE_NAME = "scrawl";
  private static final String REMOTE_FILE_NAME = "remote";
  private static final String BASE_PATH = UeditorPropertyGetUtil.getResource("config").getString("ueditor.url.base");
  private ConfigManager(String rootPath, String contextPath, String uri)
    throws FileNotFoundException, IOException
  {
    rootPath = rootPath.replace("\\", "/");

    this.rootPath = rootPath;
    this.contextPath = contextPath;

    if (contextPath.length() > 0)
      this.originalPath = (this.rootPath + uri.substring(contextPath.length()));
    else {
      this.originalPath = (this.rootPath + uri);
    }

    initEnv();
  }

  public static ConfigManager getInstance(String rootPath, String contextPath, String uri)
  {
    try
    {
      return new ConfigManager(rootPath, contextPath, uri); } catch (Exception localException) {
    }
    return null;
  }

  public boolean valid()
  {
    return this.jsonConfig != null;
  }

  public JSONObject getAllConfig()
  {
    return this.jsonConfig;
  }

  public Map<String, Object> getConfig(int type)
  {
    Map conf = new HashMap();
    String savePath = null;

    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");
      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);

    return conf;
  }

  private void initEnv()
    throws FileNotFoundException, IOException
  {
    File file = new File(this.originalPath);

    if (!file.isAbsolute()) {
      file = new File(file.getAbsolutePath());
    }

    this.parentPath = file.getParent();

    String configContent = readFile(getConfigPath());
    try
    {
      JSONObject jsonConfig = new JSONObject(configContent);
      if (jsonConfig != null) {
        String jsonString = jsonConfig.toString();
        jsonString = jsonString.replaceAll("\\#(.+?)\\#", BASE_PATH);
        jsonConfig = new JSONObject(jsonString);
      }
      this.jsonConfig = jsonConfig;
    } catch (Exception e) {
      this.jsonConfig = null;
    }
  }

  private String getConfigPath()
  {
    return this.parentPath + File.separator + "config.json";
  }

  private String[] getArray(String key)
  {
    JSONArray jsonArray = this.jsonConfig.getJSONArray(key);
    String[] result = new String[jsonArray.length()];

    int i = 0; for (int len = jsonArray.length(); i < len; i++) {
      result[i] = jsonArray.getString(i);
    }

    return result;
  }

  private String readFile(String path)
    throws IOException
  {
    StringBuilder builder = new StringBuilder();
    try
    {
      InputStreamReader reader = new InputStreamReader(new FileInputStream(path), "UTF-8");
      BufferedReader bfReader = new BufferedReader(reader);

      String tmpContent = null;

      while ((tmpContent = bfReader.readLine()) != null) {
        builder.append(tmpContent);
      }

      bfReader.close();
    }
    catch (UnsupportedEncodingException localUnsupportedEncodingException)
    {
    }

    return filter(builder.toString());
  }

  private String filter(String input)
  {
    return input.replaceAll("/\\*[\\s\\S]*?\\*/", "");
  }

  public static void main(String[] args)
  {
    String s = "{klsdfjkdsjf:sdffdsf#basePath#dfdsfd#sf}";
    System.out.println(s.replaceAll("\\#(.+?)\\#", "http://localhost:a//"));
  }
}

 

 

分享到:
评论

相关推荐

    UEditor编辑器兼容音频上传

    在UEditor编辑器中,音频独立上传功能是一项重要的增强,它允许用户直接在编辑器内上传音频文件,无需离开编辑页面,从而提高工作效率。这个特性尤其适用于那些需要在内容中嵌入音频的网站,如在线教育平台、博客...

    百度的UEditor修改图片上传路径版

    UEditor 是由百度公司开发的一款开源的富文本编辑器,它提供了丰富的API和功能,使得用户在网页上可以方便地进行文本编辑、图片上传、视频插入等操作。作为一款强大的在线编辑工具,UEditor 广泛应用于博客、论坛、...

    ueditor上传图片不显示

    ### Ueditor上传图片不显示问题解析与解决方法 ...通过上述步骤的操作,可以有效地解决Ueditor编辑器上传图片不显示的问题。同时,建议定期检查并更新编辑器版本,以避免因版本过旧而导致的各种兼容性和安全问题。

    百度UEditor自定义上传图片存储路径为本地路径

    在使用百度UEditor这款强大的富文本编辑器时,有时我们需要将用户上传的图片保存到本地服务器,而不是默认的远程服务器。这个过程涉及到自定义图片上传的存储路径,以适应我们自己的项目需求。以下是对这个主题的...

    修改百度的UEditor,实现图片上传到项目外的路径

    在IT行业中,编辑器是开发人员日常工作中不可或缺的工具,其中百度的UEditor是一个非常流行的富文本编辑器,尤其在Web应用中广泛使用。UEditor提供了丰富的文本编辑功能,包括图片上传、视频插入等,极大地提高了...

    ueditor(单独使用上传图片)

    虽然编辑器实例被隐藏,我们仍可以使用ueditor提供的API手动触发图片上传,例如调用`UE.Editor.prototype.execCommand('insertimage', imgUrls)`,其中`imgUrls`是图片URL的数组。 6. **安全性与权限控制**: 在...

    .net百度编辑器(UEditor)上传图片跟上次附件不成功的解决办法

    .NET百度编辑器(UEditor)是一个功能强大且广泛使用的富文本编辑器,但是在上传图片和附件时,可能会遇到一些问题。以下是解决.NET百度编辑器(UEditor)上传图片跟上次附件不成功的方法。 一、上传图片配置文件 ...

    Ueditor上传图片+图片回显+图片在线管理配置说明

    imagePathFormat: "{year}/{month}/{day}/{random}{filename}", // 图片上传路径格式 // 其他配置项... }; }; ``` 这里,`imageUrlPrefix` 指定了图片访问的前缀,`imagePathFormat` 则定义了图片上传后存储的...

    解决百度ueditor编辑器将图片上传到非项目根路径(保存在磁盘上)修改源码版

    如果通过百度Ueditor直接将图片上传到服务器上,当你重新发布项目到服务器上,容易造成图片的丢失!为了防止该事件的发生,尽量将图片上传到磁盘上或者独立存图片的服务器上!通过修改百度Ueditor源码实现

    百度Ueditor编辑器的使用,ASP.NET也可上传图片.zip

    **百度Ueditor编辑器简介** 百度Ueditor是一款由百度公司开发的开源富文本在线编辑器,主要用于网页内容的编辑和格式化。它提供了丰富的编辑功能,包括文本样式、图片上传、表格、链接、代码高亮等,使得用户无需...

    uEditor上传图片并保存为原文件名

    【标题】"uEditor上传图片并保存为原文件名"涉及的是在ASP.NET环境中使用uEditor编辑器进行图片上传,并确保图片文件以上传时的原始文件名存储的过程。uEditor是一个流行的富文本编辑器,广泛应用于网站内容管理系统...

    ueditor上传图片配置

    【描述】中提到的"基于springboot完整的实现了ueditor前后台的代码"意味着这个项目已经包含了ueditor编辑器的前端代码以及与之配合的SpringBoot后端处理代码。开发者无需从头开始编写处理图片上传逻辑,只需要将项目...

    ueditor上传图片到阿里云oss服务器

    本文将详细讲解如何使用ueditor这款流行的富文本编辑器将图片上传到阿里云对象存储服务(OSS)。 ueditor是一款功能强大的在线富文本编辑器,它支持多种富文本编辑功能,包括图片、视频、表格等多媒体元素的插入。...

    ueditor基本配置、图片上传配置、文件上传配置

    ueditor 是一款常用的富文本编辑器,它提供了丰富的功能,包括文本格式化、图片和文件上传等。配置ueditor涉及到的主要步骤如下: 1. **下载与放置**:首先需要从ueditor官网下载适用于项目的版本,比如这里的jsp...

    ueditor编辑器denmo

    【ueditor编辑器演示】 ueditor是一款功能强大的富文本在线编辑器,被广泛应用于网站内容编辑、论坛留言、博客文章等多个场景。它以其简洁的界面、丰富的编辑功能以及良好的用户体验,受到了开发者的青睐。本资源...

    Ueditor编辑器1.4.3.1 for wordpress 4.0插件

    **Ueditor编辑器1.4.3.1 for WordPress 4.0插件详解** **一、Ueditor编辑器简介** Ueditor是一款由百度开发的开源富文本在线编辑器,它提供了丰富的API接口和强大的功能,如图片上传、视频插入、代码高亮等,为网站...

    ueditor jsp 图片上传demo

    【标题】"ueditor jsp 图片上传demo"是一个基于Ueditor编辑器的Java Web应用程序示例,展示了如何在jsp页面上实现图片上传功能。Ueditor是一款强大的富文本编辑器,广泛应用于网页内容编辑,支持多种语言,包括...

    ueditor struts2图片上传问题解决办法

    在使用富文本编辑器ueditor与Struts2框架结合进行图片上传时,常常会遇到一些问题,这些问题可能涉及文件过滤、文件类型限制、文件大小控制、上传路径设置等多个方面。以下是一些解决这些问题的关键知识点: 1. **...

    .net core 2.1 使用UEditor上传图片资源服务器

    在wwwroot/lib/ueditor里面 页面你是可以随便改的必要的留着就行 web项目里资源文件中ueditor.config.js里面的统一的请求路径前面必须加上图片服务器的路经 以上面为例http://127.1.1.1:80/api/UEditor 记得添加...

    百度ueditor编辑器 word导入功能(asp.net版本)

    总的来说,实现百度ueditor编辑器的Word导入功能涉及到对OOXML的理解,以及在ASP.NET环境中处理文件、解析XML、转换样式和处理图片等多个技术环节。通过这一功能,开发者可以提升网站内容编辑的用户体验,同时也需要...

Global site tag (gtag.js) - Google Analytics