【SpringBoot实战】基于阿里云实现文件上传
在实际项目开发中,不可避免地会使用到阿里云OSS进行文件存储。尽管阿里云有详细的开发文档,但本篇博客的目的是让我们能够用简明的代码快速实现这个功能。
引入依赖
xml
<dependencies>
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.9.1</version>
</dependency>
<!-- 日期工具栏依赖 -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
文件上传
java
public String fileUpload(MultipartFile file) {
String endpoint = "endpoint"; // 如:oss-cn-shanghai.aliyuncs.com
String keyId = "keyId";
String keySecret = "keySecret";
String bucketName = "bucketName"; // bucket名称
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);
try {
InputStream inputStream = file.getInputStream();
// 文件实际名称
String filename = file.getOriginalFilename();
// 使用uuid确保文件名唯一
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
// 对上传文件进行分组,根据当前年/月/日
String date = new DateTime().toString("yyyy/MM/dd");
filename = date + "/" + uuid + filename;
// 创建PutObjectRequest对象
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, filename, inputStream);
// 设置该属性可以返回response。如果不设置,则返回的response为空
putObjectRequest.setProcess("true");
// 上传文件
PutObjectResult result = ossClient.putObject(putObjectRequest);
// 返回文件的url
return result.getResponse().getUri();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return null;
}