阿里云文件上传
开启阿里云oss对象存储服务
- https://oss.console.aliyun.com/overview
导入阿里云依赖
我这里使用的是jdk1.8,jdk不同的具体看文档
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.1.0</version>
</dependency>
编写变量配置类
aliyun:
oss:
file:
endpoint: oss-cn-hangzhou.aliyuncs.com
keyid: LTAI5tE5VrAKRSWx2ttPYSuQ
keysecret: uDK4thWwUgQ2CA1fYP2AktKYFV5tjl
bucketname: rainbow-project-oss
package com.xhh.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "aliyun.oss.file")
@Component
@Data
public class OSSProperties {
private String endpoint;
private String keyid;
private String keysecret;
private String bucketname;
}
sdk
@Override
public String uploadImg(MultipartFile file) {
String bucketname = ossProperties.getBucketname();
String endpoint = ossProperties.getEndpoint();
String keyid = ossProperties.getKeyid();
String keysecret = ossProperties.getKeysecret();
try {
//创建oss实例
OSS ossClient = new OSSClientBuilder().build(endpoint, keyid, keysecret);
//获取文件上传输入流
InputStream inputStream = file.getInputStream();
//获取文件名称
String originalFilename = file.getOriginalFilename();
//拼接文件名称,一文件夹的形式存储,2023/11/22/fjsdlkfjsdf01.jpg
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
String fileName = uuid + originalFilename;//fjsdlkfjsdf01.jpg
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
// String format = sdf.format(new Date());//2023/11/14
// 使用joda-time工具
String formatDate = new DateTime().toString("yyyy/MM/dd");
fileName = formatDate + "/" + fileName;
//上传
//第一个参数bucket名称
//第二个文件路径或者文件名称 2023/11/22/sdfsld01.jpg 01.jpg
//第三个文件流
// System.out.println(fileName);
ossClient.putObject(bucketname, fileName, inputStream);
//关闭
ossClient.shutdown();
//拼接路径
String url = "https://" + bucketname + "." + endpoint + "/" + fileName;
return url;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}