From bc8a6d2db7e35ee0ddd5d56fb1b82c7d7f8f4822 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Mon, 23 Oct 2023 10:57:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=8C=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E5=92=8C=E5=A4=B4=E5=83=8F=E7=9A=84=E5=AF=B9=E8=B1=A1=E5=AD=98?= =?UTF-8?q?=E5=82=A8=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jeesite/common/io/FileUtils.java | 2 +- .../common/ueditor/upload/BinaryUploader.java | 26 +++++++------------ .../common/ueditor/upload/StorageManager.java | 26 ++++++++++++------- .../src/main/resources/config/ueditor.json | 16 ++++++------ web/src/main/resources/config/ueditor.json | 16 ++++++------ 5 files changed, 44 insertions(+), 42 deletions(-) diff --git a/common/src/main/java/com/jeesite/common/io/FileUtils.java b/common/src/main/java/com/jeesite/common/io/FileUtils.java index 05369378..980e7941 100644 --- a/common/src/main/java/com/jeesite/common/io/FileUtils.java +++ b/common/src/main/java/com/jeesite/common/io/FileUtils.java @@ -779,7 +779,7 @@ public class FileUtils extends org.apache.commons.io.FileUtils { String p = StringUtils.replace(path, WIN_SEPARATOR, SEPARATOR); p = StringUtils.join(StringUtils.split(p, SEPARATOR), SEPARATOR); if (!StringUtils.startsWithAny(p, SEPARATOR) && StringUtils.startsWithAny(path, WIN_SEPARATOR, SEPARATOR)){ - p += SEPARATOR; + p = SEPARATOR + p; } if (!StringUtils.endsWithAny(p, SEPARATOR) && StringUtils.endsWithAny(path, WIN_SEPARATOR, SEPARATOR)){ p = p + SEPARATOR; diff --git a/modules/core/src/main/java/com/jeesite/common/ueditor/upload/BinaryUploader.java b/modules/core/src/main/java/com/jeesite/common/ueditor/upload/BinaryUploader.java index c540a807..0e02f08b 100644 --- a/modules/core/src/main/java/com/jeesite/common/ueditor/upload/BinaryUploader.java +++ b/modules/core/src/main/java/com/jeesite/common/ueditor/upload/BinaryUploader.java @@ -1,5 +1,14 @@ package com.jeesite.common.ueditor.upload; +import com.jeesite.common.image.ImageUtils; +import com.jeesite.common.io.FileUtils; +import com.jeesite.common.media.VideoUtils; +import com.jeesite.common.ueditor.PathFormat; +import com.jeesite.common.ueditor.define.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -8,21 +17,6 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import javax.servlet.http.HttpServletRequest; - -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.multipart.MultipartHttpServletRequest; - -import com.jeesite.common.image.ImageUtils; -import com.jeesite.common.io.FileUtils; -import com.jeesite.common.media.VideoUtils; -import com.jeesite.common.ueditor.PathFormat; -import com.jeesite.common.ueditor.define.ActionMap; -import com.jeesite.common.ueditor.define.AppInfo; -import com.jeesite.common.ueditor.define.BaseState; -import com.jeesite.common.ueditor.define.FileType; -import com.jeesite.common.ueditor.define.State; - public class BinaryUploader { public static final State save(HttpServletRequest request, Map conf) { @@ -64,7 +58,7 @@ public class BinaryUploader { savePath = PathFormat.parse(savePath, originFileName); - String physicalPath = FileUtils.path((String) conf.get("rootPath") + savePath); + String physicalPath = FileUtils.path(conf.get("rootPath") + savePath); InputStream is = null; State storageState = null; diff --git a/modules/core/src/main/java/com/jeesite/common/ueditor/upload/StorageManager.java b/modules/core/src/main/java/com/jeesite/common/ueditor/upload/StorageManager.java index 131ec056..dc1bd88c 100644 --- a/modules/core/src/main/java/com/jeesite/common/ueditor/upload/StorageManager.java +++ b/modules/core/src/main/java/com/jeesite/common/ueditor/upload/StorageManager.java @@ -1,12 +1,6 @@ package com.jeesite.common.ueditor.upload; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - +import com.jeesite.common.config.Global; import com.jeesite.common.idgen.IdGen; import com.jeesite.common.io.FileUtils; import com.jeesite.common.io.PropertiesUtils; @@ -14,6 +8,11 @@ import com.jeesite.common.lang.StringUtils; import com.jeesite.common.ueditor.define.AppInfo; import com.jeesite.common.ueditor.define.BaseState; import com.jeesite.common.ueditor.define.State; +import com.jeesite.common.web.http.ServletUtils; +import com.jeesite.modules.file.utils.FileUploadUtils; + +import javax.servlet.http.HttpServletRequest; +import java.io.*; public class StorageManager { @@ -194,12 +193,21 @@ public class StorageManager { /** * UEditor上传文件成功后调用事件 - * * @param physicalPath 上传文件实际路径 * @param storageState url 返回到客户端的文件访问地址 */ public static void uploadFileSuccess(String physicalPath, State storageState) { - + if (!Global.getPropertyToBoolean("file.enabled", "true")) { + return; + } + File file = new File(physicalPath); + String url = FileUploadUtils.ossFileUpload(file, StringUtils.substringAfter( + FileUtils.path(file.getAbsolutePath()), Global.USERFILES_BASE_URL)); + if (!StringUtils.contains(url, "://")) { + HttpServletRequest request = ServletUtils.getRequest(); + url = FileUtils.path((request != null ? request.getContextPath() : StringUtils.EMPTY) + url); + } + storageState.putInfo("url", url); } } diff --git a/web-fast/src/main/resources/config/ueditor.json b/web-fast/src/main/resources/config/ueditor.json index fda9c0cd..9ba6e287 100644 --- a/web-fast/src/main/resources/config/ueditor.json +++ b/web-fast/src/main/resources/config/ueditor.json @@ -9,7 +9,7 @@ "imageCompressBorder": 800, /* 图片压缩最大宽度限制 */ "imageInsertAlign": "none", /* 插入的图片浮动方式 */ "imageUrlPrefix": "", /* 图片访问路径前缀 */ - "imagePathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "imagePathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ /* {time} 会替换成时间戳 */ @@ -26,14 +26,14 @@ /* 涂鸦图片上传配置项 */ "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */ "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ - "scrawlPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "scrawlPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ "scrawlUrlPrefix": "", /* 图片访问路径前缀 */ "scrawlInsertAlign": "none", /* 截图工具上传 */ "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ - "snapscreenPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "snapscreenPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */ "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ @@ -41,7 +41,7 @@ "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ "catcherFieldName": "source", /* 提交的图片列表表单名称 */ - "catcherPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "catcherPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "catcherUrlPrefix": "", /* 图片访问路径前缀 */ "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ @@ -49,7 +49,7 @@ /* 上传视频配置 */ "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */ "videoFieldName": "upfile", /* 提交的视频表单名称 */ - "videoPathFormat": "/userfiles/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "videoPathFormat": "/userfiles/editor/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "videoUrlPrefix": "", /* 视频访问路径前缀 */ "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */ "videoAllowFiles": [ @@ -59,7 +59,7 @@ /* 上传文件配置 */ "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */ "fileFieldName": "upfile", /* 提交的文件表单名称 */ - "filePathFormat": "/userfiles/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "filePathFormat": "/userfiles/editor/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "fileUrlPrefix": "", /* 文件访问路径前缀 */ "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */ "fileAllowFiles": [ @@ -72,7 +72,7 @@ /* 列出指定目录下的图片 */ "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */ - "imageManagerListPath": "/userfiles/{userid}/images/", /* 指定要列出图片的目录 */ + "imageManagerListPath": "/userfiles/editor/{userid}/images/", /* 指定要列出图片的目录 */ "imageManagerListSize": 100, /* 每次列出文件数量 */ "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */ "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ @@ -80,7 +80,7 @@ /* 列出指定目录下的文件 */ "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ - "fileManagerListPath": "/userfiles/{userid}/files/", /* 指定要列出文件的目录 */ + "fileManagerListPath": "/userfiles/editor/{userid}/files/", /* 指定要列出文件的目录 */ "fileManagerListSize": 100, /* 每次列出文件数量 */ "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */ "fileManagerAllowFiles": [ diff --git a/web/src/main/resources/config/ueditor.json b/web/src/main/resources/config/ueditor.json index fda9c0cd..9ba6e287 100644 --- a/web/src/main/resources/config/ueditor.json +++ b/web/src/main/resources/config/ueditor.json @@ -9,7 +9,7 @@ "imageCompressBorder": 800, /* 图片压缩最大宽度限制 */ "imageInsertAlign": "none", /* 插入的图片浮动方式 */ "imageUrlPrefix": "", /* 图片访问路径前缀 */ - "imagePathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "imagePathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ /* {time} 会替换成时间戳 */ @@ -26,14 +26,14 @@ /* 涂鸦图片上传配置项 */ "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */ "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ - "scrawlPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "scrawlPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ "scrawlUrlPrefix": "", /* 图片访问路径前缀 */ "scrawlInsertAlign": "none", /* 截图工具上传 */ "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ - "snapscreenPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "snapscreenPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */ "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ @@ -41,7 +41,7 @@ "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ "catcherFieldName": "source", /* 提交的图片列表表单名称 */ - "catcherPathFormat": "/userfiles/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "catcherPathFormat": "/userfiles/editor/{userid}/images/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "catcherUrlPrefix": "", /* 图片访问路径前缀 */ "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ @@ -49,7 +49,7 @@ /* 上传视频配置 */ "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */ "videoFieldName": "upfile", /* 提交的视频表单名称 */ - "videoPathFormat": "/userfiles/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "videoPathFormat": "/userfiles/editor/{userid}/videos/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "videoUrlPrefix": "", /* 视频访问路径前缀 */ "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */ "videoAllowFiles": [ @@ -59,7 +59,7 @@ /* 上传文件配置 */ "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */ "fileFieldName": "upfile", /* 提交的文件表单名称 */ - "filePathFormat": "/userfiles/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ + "filePathFormat": "/userfiles/editor/{userid}/files/{yyyy}{mm}{dd}/{filename}_${time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */ "fileUrlPrefix": "", /* 文件访问路径前缀 */ "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */ "fileAllowFiles": [ @@ -72,7 +72,7 @@ /* 列出指定目录下的图片 */ "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */ - "imageManagerListPath": "/userfiles/{userid}/images/", /* 指定要列出图片的目录 */ + "imageManagerListPath": "/userfiles/editor/{userid}/images/", /* 指定要列出图片的目录 */ "imageManagerListSize": 100, /* 每次列出文件数量 */ "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */ "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ @@ -80,7 +80,7 @@ /* 列出指定目录下的文件 */ "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ - "fileManagerListPath": "/userfiles/{userid}/files/", /* 指定要列出文件的目录 */ + "fileManagerListPath": "/userfiles/editor/{userid}/files/", /* 指定要列出文件的目录 */ "fileManagerListSize": 100, /* 每次列出文件数量 */ "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */ "fileManagerAllowFiles": [