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 d21e47ec..f57aff72 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 3c850eb8..8939fbe6 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 jakarta.servlet.http.HttpServletRequest; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + 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 jakarta.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..0f699149 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 jakarta.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": [