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

相关文章

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Spring MVC 图片上传

引入需要的包 <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

在SSH的基础上使用jquery.uploadify.js上传文件

在SSH框架的基础上,使用jquery.uploadify.js实现文件的上传,之前搞了好几天,都上传不了, 在Action那边File接收到的总是为null, 为了这个还上网搜了好多相关的信息,但都不行,最后还是搜到一篇文章帮助到我了,希望能帮助到为之困扰的人。 jsp页面的关键代码: <link rel="stylesheet" type="text/css" href="${page

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

阿里云服务器ces

允许公网通过 HTTP、HTTPS 等服务访问实例 https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.0.0.3ca96b0b3KGTPq#allowHttp

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互