版权声明: https://blog.csdn.net/jiangxuexuanshuang/article/details/88702090
1、maven依赖引入
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.8.3</version>
</dependency>
2、阿里云配置类
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "aliyun")
public class AliyunProperties {
private String bucketName;
private String endpoint;
private String accessKeyId;
private String accessKeySecret;
}
3、application配置
aliyun:
bucketName: "my-bucket"
endpoint: "https://oss-cn-shenzhen.aliyuncs.com"
accessKeyId: "accessKeyId实际为准"
accessKeySecret: "accessKeySecret实际为准"
4、代码使用,本地文件上传,输入流上传,字节数组上传。
1、创建连接
@Resource
private AliyunProperties aliyunProperties;
private OSSClient createClient() {
String bucketName = aliyunProperties.getBucketName();
String endpoint = aliyunProperties.getEndpoint();
String accessKeyId = aliyunProperties.getAccessKeyId();
String accessKeySecret = aliyunProperties.getAccessKeySecret();
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
return ossClient;
}
public String upload(File file, String destFileName) throws CommonException {
String fileName = file.getName();
String suffix = this.getFileSuffix(fileName);
if (StringUtils.isNotBlank(destFileName)) {
suffix = this.getFileSuffix(destFileName);
}
UUID uuid = UUID.randomUUID();
String remoteFileName = uuid.toString() + "." + suffix;
String bucketName = aliyunProperties.getBucketName();
// 创建OSSClient实例。
OSSClient ossClient = this.createClient();
try {
// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
ossClient.putObject(bucketName, remoteFileName, file);
return remoteFileName;
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
}
@Override
public String upload(InputStream input, String destFileName) throws CommonException {
String suffix = this.getFileSuffix(destFileName);
UUID uuid = UUID.randomUUID();
String remoteFileName = uuid.toString() + "." + suffix;
String bucketName = aliyunProperties.getBucketName();
// 创建OSSClient实例。
OSSClient ossClient = this.createClient();
try {
// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
ossClient.putObject(bucketName, remoteFileName, input);
return remoteFileName;
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
}
@Override
public String upload(byte[] data, String destFileName) throws CommonException {
String suffix = this.getFileSuffix(destFileName);
UUID uuid = UUID.randomUUID();
String remoteFileName = uuid.toString() + "." + suffix;
String bucketName = aliyunProperties.getBucketName();
// 创建OSSClient实例。
OSSClient ossClient = this.createClient();
try {
// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
ByteArrayInputStream input = new ByteArrayInputStream(data);
ossClient.putObject(bucketName, remoteFileName, input);
return remoteFileName;
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
}
private String getFileSuffix(String fileName) {
if (fileName != null && fileName.contains(".")) {
return fileName.substring(fileName.lastIndexOf(".") + 1);
}
return "";
}