maven依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.0</version>
</dependency>
工具类
package com.demo.util;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.util.Calendar;
import cn.hutool.core.util.ObjectUtil;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.CreateBucketRequest;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.multipart.MultipartFile;
@Slf4j
public class OssUtil {
@Value("${metadata.aliyun.endPoint}")
private String endpoint;
@Value("${metadata.aliyun.accessKey.default.id}")
private String accessId;
@Value("${metadata.aliyun.accessKey.default.secret}")
private String accessSecret;
@Value("${metadata.aliyun.oss.nameSpace}")
private String ossNameSpace;
private OSS client;
public String uploadFile(MultipartFile file, String filePath) {
try {
buildOssClient();
InputStream inputStream = file.getInputStream();
PutObjectRequest request = new PutObjectRequest(ossNameSpace, filePath, inputStream);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(inputStream.available());
metadata.setCacheControl("no-cache");
metadata.setHeader("Pragma", "no-cache");
request.setMetadata(metadata);
client.putObject(request);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, 10);
URL url = client.generatePresignedUrl(ossNameSpace, filePath, calendar.getTime());
return url.toString();
} catch (Exception e) {
return null;
} finally {
closeOssClient();
}
}
public InputStream downloadFile(String filePath) {
InputStream inputStream;
try {
buildOssClient();
if (!client.doesObjectExist(ossNameSpace, filePath)) {
return null;
}
OSSObject object = client.getObject(ossNameSpace, filePath);
if (ObjectUtil.isNull(object)) {
return null;
}
inputStream = object.getObjectContent();
} catch (Exception e) {
return null;
}
return inputStream;
}
public void downloadFile(String remoteFilePath, String localFilePath, String bucketName) {
try {
buildOssClient();
if (!client.doesObjectExist(bucketName, remoteFilePath)) {
return;
}
GetObjectRequest request = new GetObjectRequest(bucketName, remoteFilePath);
client.getObject(request, new File(localFilePath));
} catch (Exception ignored) {
} finally {
closeOssClient();
}
}
private void createBucket(String bucketName) {
if (!client.doesBucketExist(bucketName)) {
CreateBucketRequest bucketRequest = new CreateBucketRequest(bucketName);
bucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
this.client.createBucket(bucketRequest);
}
}
private void buildOssClient() {
this.client = new OSSClientBuilder().build(endpoint, accessId, accessSecret);
}
public void closeOssClient() {
if (!ObjectUtil.isNull(client)) {
this.client.shutdown();
}
}
}