前后端分离——使用OSS
1. 第一步:编写OSS的工具类
点击查看代码
aliyun:
oss:
keyid: 填写自己的
keysecret: 填写自己的
endpoint: 填写自己的
bucketname: 填写自己的
@Component
public class OSSUtils {
public String urlOSS(MultipartFile img){
//地域节点 --- id --- 密钥 --- 存储筒名称
String endpoint = AliYunOssClient.END_POINT;
String accessKeyId = AliYunOssClient.KEY_ID;
String accessKeySecret = AliYunOssClient.KEY_SECRET;
String bucketName = AliYunOssClient.BUCKET_NAME;
try {
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
//获取文件上传的输入流
InputStream inputStream = img.getInputStream();
//获取文件名称
String Filename = img.getOriginalFilename();
/**
* 1.解决上传同一文件而被新上传的覆盖,使用uuid进行拼接文件名使文件名唯一
* 2.解决上传文件分类问题,根据时间进行分类
*/
// 将uuid 转为string 并且把-去除
String uuid = UUID.randomUUID().toString().replaceAll("-","");
Filename = uuid + Filename;
/**
* 使用的依赖是:
* <dependency>
* <groupId>joda-time</groupId>
* <artifactId>joda-time</artifactId>
*</dependency>
* new DateTime().toString(),toString()传入日期规则
* yyyy/MM-dd 形成 年为一个文件夹,月-日为一个文件夹
*/
org.joda.time.DateTime dateTime = new org.joda.time.DateTime();
String date = dateTime.toString("yyyy/MM/dd");
String filePath = date+"/"+Filename;
/**
* 第一个参数 bucket名字
* 第二个参数 上传文件到阿里云OSS的文件路径和文件名称,filePath = path + fileName
* eg:/a/b/c.jpg
* 第三个参数 是文件输入流
*/
ossClient.putObject(bucketName,filePath,inputStream);
//关闭ossClient
ossClient.shutdown();
String url = "https://"+bucketName+"."+endpoint+"/"+filePath;
//System.out.println("================="+url);
return url;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
2. OSS的属性
点击查看代码
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliYunOssClient implements InitializingBean {
private String endPoint;
private String keyId;
private String keySecret;
private String bucketName;
public static String END_POINT;
public static String KEY_ID;
public static String KEY_SECRET;
public static String BUCKET_NAME;
//在给上面属性通过配置文件注入值之后,定义static变量,让外界直接用类名.的方式获取属性
//此方法在上面私有属性被注入值之后,可以执行下面的方法
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endPoint;
KEY_ID = keyId;
KEY_SECRET = keySecret;
BUCKET_NAME = bucketName;
}
}
3. 上传接口的Controller
点击查看代码
/**
* @author 胡铭阳
* @ClassNameUploadController
* @Authorhmy
* @date 2023/1/2 10:17
* @description:文件图片上传
*/
@CrossOrigin
@RestController
public class UploadController {
@Autowired
private OSSUtils ossUtils;
@PostMapping("/upload")
public ResponseResult uploadImg(MultipartFile img){
String s = ossUtils.urlOSS(img);
return ResponseResult.okResult(s);
}
}
4. service接口
点击查看代码
/**
* @author 胡铭阳
* @ClassNameUploadService
* @Authorhmy
* @date 2023/1/2 10:19
* @description:文件图片上传
*/
public interface UploadService {
/**
* 图片上传
* @param img:文件
* @return
*/
ResponseResult uploadImg(MultipartFile img);
}
5. Impl实现类
点击查看代码
/**
* @author 胡铭阳
* @ClassNameUploadServiceImpl
* @Authorhmy
* @date 2023/1/2 10:20
* @description
*/
@Service
public class UploadServiceImpl implements UploadService {
@Autowired
private OSSUtils ossUtils;
/**
* 图片上传
*
* @param img :文件
* @return
*/
@Override
public ResponseResult uploadImg(MultipartFile img) {
String originalFilename = img.getOriginalFilename();
if (originalFilename.equals(".png")||originalFilename.equals(".jpg")||originalFilename.equals(".GIF")||originalFilename.equals(".BMP")){
throw new SystemException(AppHttpCodeEnum.FILE_TYPE_ERROR);
}
String s = ossUtils.urlOSS(img);
return ResponseResult.okResult(s);
}
}
前后端分离——使用OSS的更多相关文章
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史
---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...
- UEditor实现前后端分离时单图上传
首先,需要下载部署ueditor相关代码,可以参考一篇简单的博客,这里不再赘述: 环境搭建好后,我们先简单使用一下,启动http://web.yucong.com:8080/ueditor/index ...
- 【转】Web实现前后端分离,前后端解耦
一.前言 ”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦.并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构 ...
- 前后端分离架构:Web实现前后端分离,前后端解耦
一.前言 ”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦.并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构 ...
- Web实现前后端分离,前后端解耦
一.前言 ”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦.并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构 ...
- 【转】前后端分离架构:web实现前后端分离,前后端解耦
一.前言 ”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦.并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构 ...
- 【手摸手,带你搭建前后端分离商城系统】01 搭建基本代码框架、生成一个基本API
[手摸手,带你搭建前后端分离商城系统]01 搭建基本代码框架.生成一个基本API 通过本教程的学习,将带你从零搭建一个商城系统. 当然,这个商城涵盖了很多流行的知识点和技术核心 我可以学习到什么? S ...
- [刘阳Java]_为什么要前后端分离
前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多 ...
- Springboot+vue前后端分离项目,poi导出excel提供用户下载的解决方案
因为我们做的是前后端分离项目 无法采用response.write直接将文件流写出 我们采用阿里云oss 进行保存 再返回的结果对象里面保存我们的文件地址 废话不多说,上代码 Springboot 第 ...
- 浅谈Web前后端分离的意义
自然是有很大意义的.下面我可能说的比较多--方便题主能够更全面的了解为什么说是有有意义的.另外,本文是以Java的角度谈前后端分离.放心,大家一定会有种是我了,没错,的感觉. 一.先来明晰下概念 前后 ...
随机推荐
- 解决@Url.Action("Action", "Controller",new {p1=v1,p2=v2 })的传参问题
1.首先@Url.Action("Action", "Controller",new {p1=v1,p2=v2 })后面的model参数不可以直接用变量 需要先 ...
- 十二、Pod的NameSpace
Pod 的 NameSpace 一.Pod 的 NameSpace 使用 kubectl 管理命名空间及其包含的资源相当简单.在这一节中,我们将演示一些最常见的命名空间操作,便于你开始有效地分割资源. ...
- GCC 指令详解及动态库、静态库的使用
GCC 指令详解及动态库.静态库的使用 一.GCC 1.1 GCC 介绍 GCC 是 Linux 下的编译工具集,是「GNU Compiler Collection」的缩写,包含 gcc.g++ 等编 ...
- 基于LZO的高性能无损数据解压缩IP
LZOAccel-D LZO Data Decompression Core/无损数据解压缩IP Core LZOAccel-D是一个无损数据解压缩引擎的FPGA硬件实现,兼容LZO 2.10标准. ...
- JavaWeb3
1. 会话技术 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间共享数据 方式: 客户端会话技术:Co ...
- JUC学习笔记——进程与线程
JUC学习笔记--进程与线程 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的进程与线程部分 我们会分为以下几部分进行介绍: 进程与线程 并发与并行 同步与异步 线程详解 进程与线程 ...
- Sqlite 安装操作使用
一.什么是 SQLite 数据库 SQLite 是嵌入式SQL数据库引擎.与大多数其他 SQL 数据库不同,SQLite 没有单独的服务器进程.SQLite 直接读取和写入普通磁盘文件.具有多个表,索 ...
- 从0搭建vue3组件库: Input组件
本篇文章将为我们的组件库添加一个新成员:Input组件.其中Input组件要实现的功能有: 基础用法 禁用状态 尺寸大小 输入长度 可清空 密码框 带Icon的输入框 文本域 自适应文本高度的文本域 ...
- 质数之和【计算第x个到第y个质数之和】
题目:质数之和 已知,第一个质数是2,第二个质数是3,第三个质数是5,第四个质数是7,第五个质数是11,第六个质数是13,第七个质数是17,输入两个不相等的正整数a和b,求出第a个质数到第b个质数当中 ...
- Java 同步锁ReentrantLock与抽象同步队列AQS
AbstractQueuedSynchronizer 抽象同步队列,它是个模板类提供了许多以锁相关的操作,常说的AQS指的就是它.AQS继承了AbstractOwnableSynchronizer类, ...