Ueditor 上传云存储,上传阿里云oss上传腾讯云万象优图,腾讯云cos

2023-12-21 14:50

本文主要是介绍Ueditor 上传云存储,上传阿里云oss上传腾讯云万象优图,腾讯云cos,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ueditor 上传云存储,上传阿里云oss上传腾讯云万象优图,腾讯云cos

截至本文发表

ueditor的最新版本为UEditor 1.4.3.1版本

遵循对ueditor 官方文件‘0’ 修改的原则,保持ueditor的纯净的前提下,通过配置ueditor.config.js和config.json,以及增加自己的业务类来实现需要的功能,而不对ueditor的前台任何js或者其他文件,以及官方给的jar包等作出任何修改;

各大云存储给的api接口基本上大体相似,首先从阿里云oss开始,因为阿里云oss功能相对比较完善,强大。实现了阿里云,其他的云存储相对较简单实现。

本文是基于ueditor jsp版本的,后台框架使用的jfinal。

注意:我们这里的上传云存储,主要流程是,通过官方的默认上传方式方法流程,把文件上传到服务器本地,然后在上传到相应的云存储里,而不是用户端直接上传云存储而不经过服务器(不经过服务器而直传云存储的方式方法后面补充)。

160309_DInG_271088.png

上图为ueditor的官方下载的文件,解压后是这样的结构,把它放到自己的目录下面,我这里放到我的WebRoot下的extends文件夹。

关于jsp/lib下面的jar包全部copy到我们的Web-Inf下面的lib里面;

我们主要是对该主目录下面的ueditor.config.js做一些配置的修改,其他文件保持不变。

160331_Z8lC_271088.png 

Ueditor默认走的是上图所示 jsp/controller.jsp的jsp。

我们主要对serverUrl进行配置,配置为自己的controller的action。虽然我们配置为我们自己的action,但是上传机制还是用的ueditor官方jsp版本的,而不是我们自己的上传机制。

 

(这里需要对官方给的jsp 的demo原理进行大体的了解,如果不了解官方的上传处理机制,那么就无法对ueditor进行正确的改进。关于ueditor官方demo的原理请看这里)

https://my.oschina.net/terely/blog/795536

由于官方的实现由于有若干不合理的地方,所以这里我们重写主要的入口类ActionEnter.java;

160407_sdwZ_271088.png 

如上图所示ueditor的后台代码我们主要有这几个类;

1:ActionEnter.java该类是ueditor后台的主要入口,这里使用我们同名的类来代替ueditor官方文件里的ActionEnter类,该类完全copy自官方的文件只对其中的一个地方做了修改:

160421_Q8qz_271088.png 

如上图所示,之所以修改这里,是因为官方给的demo里限定死了这个路径,导致了我们的config.json必须放到某个位置,而不能随意修改位置。这里我们修改为变量形势

configPath:config.json的 相对于根目录webroot的路径地址

这样config.json 可以放到程序的任意位置;

 

2.UeditorController.java:该类是控制器,是主要的请求入口类作用和官方的controller.jsp文件一样的,来负责控制请求的转发;

3.UeditorService.java:该类是业务逻辑类,主要的业务逻辑都在这里实现,比如上传文件到阿里云还是腾讯云等;

4.Config.json 是官方文件中在jsp文件夹下面和controller.jsp同目录的后台配置文件,该文件可以放到任何我们程序目录的任意位置,这里为了方便放到同一个目录下面;

 

 

下面是控制器的主要方法:

public void index() throws UnsupportedEncodingException{//rootPath 网站根目录String rootPath =PathKit.getWebRootPath();String action =this.getPara( "action" );//这里把config.json放到了和该类同一个目录下;加上contextPath是因为在后面百度会判断是否有并且去掉该串;String configpath = contextPath+PathKit.getPath(getClass()).substring(rootPath.length())+"/config.json";String  rs = new ActionEnter( request, rootPath,configpath ).exec();System.out.println(rs);if(Boolean.parseBoolean(PropKit.getProp("config.properties").get("is_upload_cloud"))){//是否上传到云存储,不上传云存储,存储在服务器本地则直接返回//暂定图片,文件,涂鸦才上传到云存储;if("uploadimage".equals(action)||"uploadfile".equals(action)||"uploadscrawl".equals(action)){rs = ueditorService.ueUpload(action,rs);//调用上传云存储逻辑;}}//返回jsonString  结果this.renderJson(rs);}

 

主要的上传云存储的逻辑在这一句代码里面;

rs = ueditorService.ueUpload(action,rs); 

具体的实现都在ueditorService这个业务逻辑类里面;

关于这个如何实现的上传到不同的云存储,需要结合不同云存储服务商给的sdk和api来实现。

下面是上传到阿里云存储的一个简单的实现方法逻辑,上传到其他云存储基本上原理一致。

JSONObject jsonObj = JSON.parseObject(rs);String state = jsonObj.getString("state");if("SUCCESS".equals(state)){//只对成功的情况进行处理String bucketName = "bucketName";  File file = new File(PathKit.getWebRootPath()+jsonObj.get("url").toString());aliyunService.getClitent().putObject(bucketName, jsonObj.getString("url").substring(1), file);return rs;}

这里调用的是aliyun oss给的javasdk 的putObject方法来上传到阿里云oss的。由于阿里云存储目录结构保持和我们本地的一致,所以这里的rs我们不需要改变直接返回即可。注意把config.json的imageUrlPrefix 项配置成为自己的oss访问地址。

 

 

这样我们就在对官方文件‘0’修改的情况下完成了文件上传到本地服务器后在上传到相应的云存储中。

 

转载于:https://my.oschina.net/terely/blog/795544

这篇关于Ueditor 上传云存储,上传阿里云oss上传腾讯云万象优图,腾讯云cos的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/520413

相关文章

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【