阿里云OSS的使用(全程请登陆)
文章目录
- 1、阿里云oss服务开通
- 2、进入控制台
- 3、创建Bucket
- 4、上传一张图片,测试是否成功
- 5、创建AccessKey
- 6、Java集成OSS
- 6.1、依赖POM
- 6.2、配置类application.yml
- 6.3、创建启动类
- 6.4、创建一个读取配置的类
- 6.5、controller
- 6.6、service
- 6.7、service.impl
- 6.8、测试
- 6.9、Nginx反向代理
- 7、其余,swagger集成,R类统一返回,统一日志等,请看我其他博客
个人博客网站: https://xingkongdiyiren.github.io/myblog/,完整的Java知识体系,包括408,架构,业务,产品,软技能等
1、阿里云oss服务开通
点击开通:https://www.aliyun.com/ss/?spm=5176.22772544.J_8058803260.37.4aa92ea9DAomsC&k=OSS
2、进入控制台
点击进入:https://oss.console.aliyun.com/overview?spm=5176.10695662.5694434980.5.735b30bePm5pgo
3、创建Bucket
点击进入bucket:https://oss.console.aliyun.com/bucket
按照下面选择就行,主要是红框里面的要选,其他默认就行,都是不开通或者关闭,其中名称自己命名,地址选自己所在区域(这会快很多)。
4、上传一张图片,测试是否成功
文件管理-》点击图片详情,然后用url去访问:
就可以下载成功!!!说明可以访问!!!!
5、创建AccessKey
1、点击头像:url直达->https://ram.console.aliyun.com/manage/ak
上面这个access key是下面操作的关键
温馨提示:不要用我的,我写完博客就删,换个新的!!!!
AccessKey ID | LTAI5t6pkvY99BLYA5MSXWzA |
---|---|
AccessKey Secret | 5SSwHf8GWg6siJHFH3ylcpJd7eEy9q |
上代码!!!!!
6、Java集成OSS
官网参考链接:https://help.aliyun.com/document_detail/32009.html?spm=a2c4g.11186623.6.918.76fe46a1upTv30
6.1、依赖POM
<!--aliyunOSS--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.1.0</version></dependency><!--日期时间工具--><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.1</version></dependency>
6.2、配置类application.yml
# 服务端口
server:port: 8002
spring:application:name: service-oss # 服务名profiles:active: dev # 环境配置:dev,test,prod
# 集成阿里云OSS=>不同的服务器,地址不同
aliyun:oss:file:endpoint: oss-cn-beijing.aliyuncs.com # 对应公网endpoint地址keyid: LTAI5t6pkvY99BLYA5MSXWzAkeysecret: 5SSwHf8GWg6siJHFH3ylcpJd7eEy9qbucketname: zhz-mail #可以代码层面实现
6.3、创建启动类
package com.zhz.oss;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;/*** @author zhouhengzhe* @Description: 启动类* @date 2021/6/29上午1:42*/
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//加这个是为了排除数据库
@ComponentScan(basePackages = {"com.zhz"})
public class OssApplication {public static void main(String[] args) {SpringApplication.run(OssApplication.class,args);}
}
6.4、创建一个读取配置的类
package com.zhz.oss.utils;import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** @author zhouhengzhe* @Description: 读取oss配置信息,当项目已启动,Spring接口,Spring加载之后,执行接口的一个方法* @date 2021/6/29上午1:47*/
@Component
@ConfigurationProperties(prefix = "aliyun.oss.file")
public class ConstantPropertiesUtils implements InitializingBean {/*** 对应公网endpoint地址*/@Value("${aliyun.oss.file.endpoint}")private String endpoint;/*** 账号*/@Value("${aliyun.oss.file.keyid}")private String keyId;/*** 密码*/@Value("${aliyun.oss.file.keysecret}")private String keySecret;/*** 对应要存储到哪个块*/@Value("${aliyun.oss.file.bucketname}")private String bucketName;public static String END_POINT;public static String ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;public static String BUCKET_NAME;@Overridepublic void afterPropertiesSet() throws Exception {END_POINT=endpoint;ACCESS_KEY_ID=keyId;ACCESS_KEY_SECRET=keySecret;BUCKET_NAME=bucketName;}
}
6.5、controller
package com.zhz.oss.controller;import com.zhz.common.utils.R;
import com.zhz.oss.service.OssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;/*** @author zhouhengzhe* @Description: Oss控制器类* @date 2021/6/29上午1:56*/
@RestController
@RequestMapping("/eduoss/fileoss")
@CrossOrigin
public class OssController {@Autowiredprivate OssService ossService;/*** 上传头像*/@PostMapping("")public R uploadOSSFile(MultipartFile file){//获取上传文件 MultipartFile//返回上传到oss的路径String url=ossService.uploadFileAvatar(file);return R.ok().data("url",url);}
}
6.6、service
package com.zhz.oss.service;import org.springframework.web.multipart.MultipartFile;/*** @author zhouhengzhe* @Description: 文件上传oss处理类接口* @date 2021/6/29上午1:58*/
public interface OssService {/*** 上传头像到oss* @param file 文件对象* @return*/String uploadFileAvatar(MultipartFile file);
}
6.7、service.impl
package com.zhz.oss.service.impl;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.zhz.oss.service.OssService;
import com.zhz.oss.utils.ConstantPropertiesUtils;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.UUID;/*** @author zhouhengzhe* @Description: 上传文件到oss的处理类* @date 2021/6/29上午2:01*/
@Service
public class OssServiceImpl implements OssService {/*** 上传头像到oss** @param file 文件对象* @return*/@Overridepublic String uploadFileAvatar(MultipartFile file) {// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。String endpoint = ConstantPropertiesUtils.END_POINT;// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;//块名String bucketName=ConstantPropertiesUtils.BUCKET_NAME;try {// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);// 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。InputStream inputStream = file.getInputStream();//获取文件真实名称String originalFilename = file.getOriginalFilename();//重命名,防止相同文件出现覆盖 生成的f4f2e1a3-391a-4d5a-9438-0c9f5d27708=》需要替换成f4f2e1a3391a4d5a94380c9f5d27708cString uuid = UUID.randomUUID().toString().replaceAll("-","");//新的文件名originalFilename=uuid+originalFilename;//2、把文件按照日期进行分类// 2021/6/30String datePath = new DateTime().toString("yyyy/MM/dd");//拼接 021/6/30/1.jpgoriginalFilename=datePath+"/"+originalFilename;// oss实现上传文件//第一个参数:Bucket名称//第二个参数:上传到oss文件路径和文件名称 /zhz/avatar.txtossClient.putObject(bucketName, originalFilename, inputStream);// 关闭OSSClient。ossClient.shutdown();//把上传之后文件路径返回//需要把上传到阿里云oss路径手动拼接出来->https://zhz-mail.oss-cn-beijing.aliyuncs.com/WechatIMG19.jpegString url="https://"+bucketName+"."+endpoint+"/"+originalFilename;return url;} catch (Exception e) {e.printStackTrace();return null;}}
}
6.8、测试
因为我是集成了swagger的,所以我可以通过swagger测试
6.9、Nginx反向代理
第一步,修改默认端口:
为什么要改成81呢,是因为后面如果要用网关,网关一般都是80,所以就改了
http {server {
listen 81;
......
},
...
server {listen 8201;server_name www.zhzmail.com;location ~ /eduoss/ {proxy_pass http://localhost:8002;}
} }
然后我就可以简写成www.zhzmail.com去不写我的ip+端口了
7、其余,swagger集成,R类统一返回,统一日志等,请看我其他博客
统一日志:https://blog.csdn.net/zhouhengzhe/article/details/118078080
统一返回值:https://blog.csdn.net/zhouhengzhe/article/details/118065066
统一异常:https://blog.csdn.net/zhouhengzhe/article/details/118064739
swagger集成:https://blog.csdn.net/zhouhengzhe/article/details/118063779
下面是本人的公众号:(有兴趣可以扫一下,文章会同步过去)
我是小白弟弟,一个在互联网行业的小白,立志成为一名架构师
https://blog.csdn.net/zhouhengzhe?t=1
阿里云OSS的使用(全程请登陆)相关推荐
- 阿里云OSS云存储平台
阿里云OSS云存储平台实战--图片上传/下载/删除 一.OSS实战要求 使用SpringBoot和OSS实现图片的上传.下载和删除功能, 具体要求如下: 可以使用postman 发送上传请求 /pic ...
- springboot整合阿里云oss上传的方法示例
这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...
- 微信小程序 - 超详细 “纯前端“ 将文件上传到阿里云 OSS,最新阿里云 OSS 直传音视频、图片、word、excel、ppt、office 文档(全程无需后端,前端文件直传阿里云oss服务器)
前言 网上的教程乱七八糟却文件少代码(并且没注释),而且都已经很老了,对于新手来说真的无从下手. 本文站在新手小白的角度,实现微信小程序开发中,"前端直传" 上传文件到阿里云oss ...
- Golang操作阿里云OSS上传文件
为什么要使用OSS?应用场景是什么? 最近在开发考试系统,里面需要上传课件,课件包括pdf,map等等各种类型的文件,这些文件不能像图片一样,直接上传到项目目录下面,需要单独存放,阿里云就提供了存储方 ...
- 【探花交友DAY 03】个人信息完善 阿里云OSS百度人脸识别引入 统一Token和异常处理
1. 阿里云OSS和百度人脸识别 1.1 需求分析 在登录判断的时候,我们需要根据用户的手机号查询用户是否为新用户,如果为新用户,那么在登录完成后需要跳转到完善用户信息界面,用户需要设置性别,头像和昵 ...
- 使用阿里云OSS实现图片上传案例
文章目录 前言 一.OSS是什么? 二.使用步骤 1.开通OSS服务 2.创建bucket 3.创建子账户 4.查看帮助文档,编写后端代码 5.layui前端 总结 前言 在正式的开发环境中,类似图片 ...
- 6、阿里云OSS对象存储手把手学习及企业使用方案
文章目录 1.什么是分布式文件系统 2.图片存储解决方案 3.阿里云OSS对象存储 3.1.开通oss访问 3.2.购买服务 3.3.基本概念 3.4.创建一个bucket 3.5.创建AccessK ...
- 阿里云 OSS开发使用文档
阿里云 OSS开发使用文档 阿里云 OSS(Object Storage Service)提供基于网络的数据存取服务.使用 OSS,可以通过网络随时存储和调用包括文本.图片.音频和视频等在内的各种结构 ...
- 安卓手把手教你结合阿里云OSS存储实现视频(音频,图片)的上传与下载
首先,明白阿里云OSS是个什么鬼 阿里云对象存储(Object Storage Service,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务.用户可以通过调用API,在任何 ...
最新文章
- UITableView数据的添加、删除、移动
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 ExpandoMetaClass 进行方法注入 )
- QT的QSplashScreen类的使用
- MySQL学习_计算用户支付方式占比_20161104
- linux java top_Linux top和负载的解释(转载)
- 先装XP再装WIN2000双系统无法启动的解决办法
- python 复制文件夹内容 并结构一致_Python-移动和覆盖文件和文件夹
- python3用list实现栈
- mysql 从库状态_大神教你自动发现监控mysql从库状态
- 计算机模拟病例考试试题,计算机模拟病例考试评分方法的研究概述
- Python MetaClass深入分析
- poj2485poj2395 kruskal
- ruby入门tips
- 摩尔定律终结后 科技也许会向这3个方向前进
- CSS font-family常见中文字体对应的英文名称
- 知识树 = 系统思维 + 外接大脑
- onblur()无限触发问题
- Android青翼蝠王之ContentProvider
- Stream系列(十二) PartitioningBy方法使用
- python-科研绘图系列(2)-等高线图
热门文章
- pip3升级报错:PermissionError: [Errno 13] Permission denied: '/usr/bin/pip' - '/tmp/pip-yndfk0h8-uninsta
- 超声波换能器发生器电源
- SQLserver服务器修复,SqlServer数据库损坏后的修复过程
- 【Java基础】面向对象与面向过程、编译型语言与解释型语言
- 筑智建—中职土建类专业BIM装配式建筑育人模式师资培训圆满完成
- Angular 10 - CommonJS or AMD dependencies can cause optimization bailouts warning
- 小甜点,RecyclerView 之 ItemDecoration 讲解及高级特性实践
- Modelsim SE 10.4a安装
- 世界人工智能大会,马化腾、马云等大佬都聊了些什么?
- 快讯!百卓网络与天津大学共建“智能计算联合实验室”正式揭牌