OSS简介请看上一篇
spring boot上传阿里云对象存储OSS快速上手(一、控制台简介)
通过代码实现上传阿里云oss首先需要AccessKey,首次使用需要创建AccessKey
阿里云OSS控制台下点击右上角头像进入AccessKey 管理
首次使用创建Access Key
导入pom坐标
<!--aliyunOSS-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
<!--日期时间工具-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version> 2.10.1</version>
</dependency>
application.properties
, 通过配置文件读取参数,也可以直接将参数写入方法里面。
#服务端口
server.port=8003
#环境设置:dev、test、prod
spring.profiles.active=dev
#阿里云 OSS
#地域节点参数
aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com
#自己的AccessKey id和密钥参数
aliyun.oss.file.keyid=
aliyun.oss.file.keysecret=
#bucket参数 可以在控制台创建,也可以使用java代码创建
aliyun.oss.file.bucketname=oss-demo-zyw
地域节点参数:
读取配置文件里的那四个参数
//当项目已启动,spring接口,spring加载之后,执行接口一个方法
@Component
public class ConstantPropertiesUtils implements InitializingBean {
//读取配置文件内容
@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_POIND;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
END_POIND = endpoint;
ACCESS_KEY_ID = keyId;
ACCESS_KEY_SECRET = keySecret;
BUCKET_NAME = bucketName;
}
}
service业务代码
接口:
public interface OssService {
String uploadFileAvatar(MultipartFile file) throws IOException;
}
实现类:
@Service
public class OssServiceImpl implements OssService {
@Override
public String uploadFileAvatar(MultipartFile file) throws IOException {
//从全局工具类读取参数
// Endpoint请按实际情况填写。
String endpoint = ConstantPropertiesUtils.END_POIND;
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
String accessKeyId = ConstantPropertiesUtils.ACCESS_KEY_ID;
String accessKeySecret = ConstantPropertiesUtils.ACCESS_KEY_SECRET;
String bucketName=ConstantPropertiesUtils.BUCKET_NAME;
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件流。
InputStream inputStream = null;
inputStream = file.getInputStream();
//获取上传文件名,包含后缀
String originalFilename = file.getOriginalFilename();
//获取后缀
String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
//生成唯一uuid值并且去掉里面的‘-’
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String dateTime = new DateTime().toString("yyyy/MM/dd");
String filename=dateTime+"/"+uuid+substring;
ossClient.putObject(bucketName,filename , inputStream);
// 关闭OSSClient。
ossClient.shutdown();
String url="https://"+bucketName+"."+endpoint+"/"+filename;
return url;
}
}
controller控制层
@RestController
@RequestMapping("/ossdemo")
@CrossOrigin
public class OssController {
@Autowired
private OssService ossService;
@PostMapping
public String uploadOssFile(MultipartFile file){
String url= null;
try {
url = ossService.uploadFileAvatar(file);
} catch (IOException e) {
e.printStackTrace();
}
return url;
}
}
编写简单界index.html测试,将该网页放入resource/static
目录下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="http://127.0.0.1:8003/ossdemo">
<input type="file" name="file"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
启动spring boot测试:
成功返回图片链接,可以直接复制链接在浏览器下载图片。
进入控制台查看上传的图片
别的操作详情可以进入阿里云查看官方文档操作:
https://help.aliyun.com/document_detail/32009.html
帮助到您请点赞关注收藏谢谢!!