init
This commit is contained in:
115
ruoyi-common/src/main/java/com/ruoyi/common/utils/OssUtils.java
Normal file
115
ruoyi-common/src/main/java/com/ruoyi/common/utils/OssUtils.java
Normal file
@@ -0,0 +1,115 @@
|
||||
package com.ruoyi.common.utils;
|
||||
|
||||
import com.aliyun.oss.OSS;
|
||||
import com.aliyun.oss.OSSClientBuilder;
|
||||
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
|
||||
import com.ruoyi.common.utils.uuid.IdUtils;
|
||||
import com.ruoyi.common.utils.uuid.UUID;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.commons.lang3.time.DateUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
@Configuration
|
||||
@Slf4j
|
||||
public class OssUtils {
|
||||
|
||||
@Value(value = "${oss.endpoint}")
|
||||
private String endpoint;
|
||||
|
||||
@Value(value = "${oss.accessKeyId}")
|
||||
private String accessKeyId;
|
||||
|
||||
@Value(value = "${oss.accessKeySecret}")
|
||||
private String accessKeySecret;
|
||||
|
||||
@Value(value = "${oss.bucketName}")
|
||||
private String bucketName;
|
||||
|
||||
@SneakyThrows
|
||||
public String upload(File file) {
|
||||
String originalFileName = file.getName();
|
||||
String fileName = String.format("%s%s", IdUtils.fastSimpleUUID(), originalFileName.substring(originalFileName.lastIndexOf(".")));
|
||||
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
||||
String url;
|
||||
try (InputStream inputStream = new FileInputStream(file)) {
|
||||
ossClient.putObject(bucketName, fileName, inputStream);
|
||||
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, fileName);
|
||||
request.setExpiration(DateUtils.addYears(new Date(), 3));
|
||||
url = ossClient.generatePresignedUrl(request).toString();
|
||||
log.info("文件上传url = {}", url);
|
||||
} finally {
|
||||
if (Objects.nonNull(ossClient)) {
|
||||
ossClient.shutdown();
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
public String upload(MultipartFile file) throws IOException {
|
||||
|
||||
String originalFileName = file.getOriginalFilename();
|
||||
String fileName = UUID.randomUUID() + originalFileName.substring(originalFileName.lastIndexOf("."));
|
||||
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
||||
String url = new String();
|
||||
Date no = new Date();
|
||||
no.setYear(no.getYear() + 3);
|
||||
try (InputStream inputStream = file.getInputStream()) {
|
||||
ossClient.putObject(bucketName, fileName, inputStream);
|
||||
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, fileName);
|
||||
request.setExpiration(no);
|
||||
url = ossClient.generatePresignedUrl(request).toString();
|
||||
log.info("文件上传 ,url = " + url);
|
||||
} finally {
|
||||
if (ossClient != null) {
|
||||
ossClient.shutdown();
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
public int deleteFile(String url) throws IOException {
|
||||
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
||||
URL url1 = new URL(url);
|
||||
try {
|
||||
ossClient.deleteObject(bucketName, url1.getPath().split("/")[1]);
|
||||
log.info("文件刪除 ,url = " + url);
|
||||
} finally {
|
||||
if (ossClient != null) {
|
||||
ossClient.shutdown();
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
public InputStream getInputStreamByUrl(String url) {
|
||||
return getInputStreamByName(getFileNameByUrl(url));
|
||||
}
|
||||
|
||||
public String getFileNameByUrl(String url) {
|
||||
int start = url.lastIndexOf("/") + 1;
|
||||
int end = url.lastIndexOf("?");
|
||||
return end > 0 ? url.substring(start, end) : url.substring(start);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public InputStream getInputStreamByName(String fileName) {
|
||||
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
|
||||
try {
|
||||
return IOUtils.toBufferedInputStream(ossClient.getObject(bucketName, fileName).getObjectContent());
|
||||
} finally {
|
||||
ossClient.shutdown();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user