前后端分离——使用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的角度谈前后端分离.放心,大家一定会有种是我了,没错,的感觉. 一.先来明晰下概念 前后 ...
随机推荐
- Spring源码知识
bean的生命周期: 实例化:在堆空间中申请内存,使用反射来实现:(createBeanInstance) 自定义属性赋值(setter).容器对象属性赋值(invokeAwareMethods) 前 ...
- 我的Spark学习笔记
一.架构设计 Driver根据用户代码构建计算流图,拆解出分布式任务并分发到 Executors 中去:每个Executors收到任务,然后处理这个 RDD 的一个数据分片子集 DAGSchedule ...
- Excel中的VLOOKUP函数
VLOOKUP函数是Excel中的一个纵向查找函数,功能是按列查找,最终返回该列所需查询序列所对应的值. 该函数的语法规则如下: VLOOKUP(lookup_value,table_array,co ...
- C#11之原始字符串
最近.NET7.0和C#11相继发布,笔者也是第一时间就用上了C#11,其中C#11的有一个更新能解决困扰我多年的问题,也就是文章的标题原始字符串. 在使用C#11的原始字符串时,发现的一些有意思的东 ...
- Java注解与原理分析
目录 一.注解基础 二.注解原理 三.常用注解 1.JDK注解 2.Lombok注解 四.自定义注解 1.同步控制 2.类型引擎 五.参考源码 使用的太多,被忽略的理所当然: 一.注解基础 注解即标注 ...
- Debian Linux 的安装
Debian Linux 的安装 作者:Grey 原文地址: 博客园:Debian Linux 的安装 CSDN:Debian Linux 的安装 说明 本安装说明是基于 Windows 10 下 V ...
- Crony 一个基于Go语言实现的分布式定时任务管理平台
crony - 分布式定时任务管理平台 1. 基本介绍 1.1 项目背景 项目中存在许多定时任务,很多代码写法都是采取见缝插针式的写法或者直接丢到task服务里面写,存在以下问题 服务多实例时执行定时 ...
- C ++:树
C++:树 树的概念: 所谓"树"是输就结构的一种,树大概可以分为两大类: 有根树 和 无根树 有根树使有一个确定的根节点,反之为无根树 · 子节点:从树根开始,通过树边向下扩展的 ...
- WebApi如何启用Session并且使用
首先打开项目的Global.asax文件,重新方法init public override void Init() { //注册事件 this.AuthenticateRequest += WebAp ...
- jmeter 从多个数中随机取一个值的方法
问题描述:使用jmeter进行接口测试时,遇到枚举值(如:10代表闲置.15代表使用中.20代表维修等)我们需要随机取一个类型传到接口中. 解决思路:通过函数助手查找随机函数,找到__chooseRa ...