前后端分离——使用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的角度谈前后端分离.放心,大家一定会有种是我了,没错,的感觉. 一.先来明晰下概念 前后 ...
随机推荐
- 笔记:Debian下为sublime text建立软链接[像vi一样到处使用]
先查询sublime-text安装路径 :~$ dpkg -L sublime-text /. /opt /opt/sublime_text ... /opt/sublime_text/sublime ...
- How to install the Package Controller
How to install the Package Controller? https://packagecontrol.io/installation INSTALLATION Use one o ...
- Codeforces Global Round 18 B. And It's Non-Zero(按位前缀和)
题目大意:求一段数(l到r)的按位与结果不为零需要删除中间元素的最小个数 思路:按位与使得结果不为0只要有某一位全是1即可,所以只要统计每一位1的个数,用总个数减去1的个数就是某一位0的个数 删除包含 ...
- MVC开发单元测试小工具 —— 搜寻还没写单元测试的方法
方法比较笨,有更好的建议可以提. 写这个工具呢,因为要写单元测试,保证代码质量,方便修改维护.一切为了自己方便.当然这个算是个人开发的项目 1.MVC中控制器建立个基类(这个光明正大的抄袭的),控制往 ...
- extern "C"的使用
在使用C++开发程序时,有时使用到别人开发的第三方库,而这第三库是使用C开发的.直接使用会报错如下: cpp error LNK2019: 无法解析的外部符号 "int __cdecl su ...
- (GCC) gcc 编译选项 -fno-omit-frame-pointer,-fno-tree-vectorize,fno-optimize-sibling-calls;及内存泄漏、非法访问检测 ASAN
omit-frame-pointer 开启该选项,主要是用于去掉所有函数SFP(Stack Frame Pointer)的,即在函数调用时不保存栈帧指针SFP,代价是不能通过backtrace进行调试 ...
- crtl+鼠标左键代码出现class file editor,source not found
点击Attached source或者已经添加过按钮变成Change Attached Source 点击之后将自己jdk路径下的src.zip导入就可以了 图片来自https://blog.csdn ...
- 【collection】1.java容器之HashMap&LinkedHashMap&Hashtable
Map源码剖析 HashMap&LinkedHashMap&Hashtable hashMap默认的阈值是0.75 HashMap put操作 put操作涉及3种结构,普通node节点 ...
- 1.1 大数据简介-hadoop-最全最完整的保姆级的java大数据学习资料
目录 1 hadoop-最全最完整的保姆级的java大数据学习资料 1.1 大数据简介 1.1.1 大数据的定义 1.1.2 大数据的特点 1.1.3 大数据的应用场景 1.1.4 大数据的发展趋势及 ...
- Maven工程卡在Resolving Maven dependencies,长时间不变
添加:-Xms1024m -Xmx2048m 点apply.ok 秒解决