文章目录

  • 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的使用(全程请登陆)相关推荐

  1. 阿里云OSS云存储平台

    阿里云OSS云存储平台实战--图片上传/下载/删除 一.OSS实战要求 使用SpringBoot和OSS实现图片的上传.下载和删除功能, 具体要求如下: 可以使用postman 发送上传请求 /pic ...

  2. springboot整合阿里云oss上传的方法示例

    这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...

  3. 微信小程序 - 超详细 “纯前端“ 将文件上传到阿里云 OSS,最新阿里云 OSS 直传音视频、图片、word、excel、ppt、office 文档(全程无需后端,前端文件直传阿里云oss服务器)

    前言 网上的教程乱七八糟却文件少代码(并且没注释),而且都已经很老了,对于新手来说真的无从下手. 本文站在新手小白的角度,实现微信小程序开发中,"前端直传" 上传文件到阿里云oss ...

  4. Golang操作阿里云OSS上传文件

    为什么要使用OSS?应用场景是什么? 最近在开发考试系统,里面需要上传课件,课件包括pdf,map等等各种类型的文件,这些文件不能像图片一样,直接上传到项目目录下面,需要单独存放,阿里云就提供了存储方 ...

  5. 【探花交友DAY 03】个人信息完善 阿里云OSS百度人脸识别引入 统一Token和异常处理

    1. 阿里云OSS和百度人脸识别 1.1 需求分析 在登录判断的时候,我们需要根据用户的手机号查询用户是否为新用户,如果为新用户,那么在登录完成后需要跳转到完善用户信息界面,用户需要设置性别,头像和昵 ...

  6. 使用阿里云OSS实现图片上传案例

    文章目录 前言 一.OSS是什么? 二.使用步骤 1.开通OSS服务 2.创建bucket 3.创建子账户 4.查看帮助文档,编写后端代码 5.layui前端 总结 前言 在正式的开发环境中,类似图片 ...

  7. 6、阿里云OSS对象存储手把手学习及企业使用方案

    文章目录 1.什么是分布式文件系统 2.图片存储解决方案 3.阿里云OSS对象存储 3.1.开通oss访问 3.2.购买服务 3.3.基本概念 3.4.创建一个bucket 3.5.创建AccessK ...

  8. 阿里云 OSS开发使用文档

    阿里云 OSS开发使用文档 阿里云 OSS(Object Storage Service)提供基于网络的数据存取服务.使用 OSS,可以通过网络随时存储和调用包括文本.图片.音频和视频等在内的各种结构 ...

  9. 安卓手把手教你结合阿里云OSS存储实现视频(音频,图片)的上传与下载

    首先,明白阿里云OSS是个什么鬼 阿里云对象存储(Object Storage  Service,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务.用户可以通过调用API,在任何 ...

最新文章

  1. UITableView数据的添加、删除、移动
  2. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 ExpandoMetaClass 进行方法注入 )
  3. QT的QSplashScreen类的使用
  4. MySQL学习_计算用户支付方式占比_20161104
  5. linux java top_Linux top和负载的解释(转载)
  6. 先装XP再装WIN2000双系统无法启动的解决办法
  7. python 复制文件夹内容 并结构一致_Python-移动和覆盖文件和文件夹
  8. python3用list实现栈
  9. mysql 从库状态_大神教你自动发现监控mysql从库状态
  10. 计算机模拟病例考试试题,计算机模拟病例考试评分方法的研究概述
  11. Python MetaClass深入分析
  12. poj2485poj2395 kruskal
  13. ruby入门tips
  14. 摩尔定律终结后 科技也许会向这3个方向前进
  15. CSS font-family常见中文字体对应的英文名称
  16. 知识树 = 系统思维 + 外接大脑
  17. onblur()无限触发问题
  18. Android青翼蝠王之ContentProvider
  19. Stream系列(十二) PartitioningBy方法使用
  20. python-科研绘图系列(2)-等高线图

热门文章

  1. pip3升级报错:PermissionError: [Errno 13] Permission denied: '/usr/bin/pip' - '/tmp/pip-yndfk0h8-uninsta
  2. 超声波换能器发生器电源
  3. SQLserver服务器修复,SqlServer数据库损坏后的修复过程
  4. 【Java基础】面向对象与面向过程、编译型语言与解释型语言
  5. 筑智建—中职土建类专业BIM装配式建筑育人模式师资培训圆满完成
  6. Angular 10 - CommonJS or AMD dependencies can cause optimization bailouts warning
  7. 小甜点,RecyclerView 之 ItemDecoration 讲解及高级特性实践
  8. Modelsim SE 10.4a安装
  9. 世界人工智能大会,马化腾、马云等大佬都聊了些什么?
  10. 快讯!百卓网络与天津大学共建“智能计算联合实验室”正式揭牌