oss 存儲(chǔ)
file:
local:
path: localFile
prefix: statics
urlPrefix: http://api.gateway.com:8080/api-f${file.local.prefix}
aliyun:
endpoint: http://oss-cn-beijing.aliyuncs.com
accessKeyId: xxx
accessKeySecret: xxx
bucketName: sam-bucker
saveUrl: https://sam-bucker.oss-cn-beijing.aliyuncs.com
subUploadDirReplacement: current_date
uploadDir: audit/${file.aliyun.subUploadDirReplacement}/
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.8.2</version>
</dependency>
@Data
@Configuration
@ConfigurationProperties(prefix = "file.aliyun")
public class AliyunConfig {
private String accessKeyId;
private String accessKeySecret;
private String endpoint;
private String bucketName;
private String saveUrl;
private String uploadDir;
private String subUploadDirReplacement;
/**
* 阿里云文件存儲(chǔ)client
*
*/
@Bean
public OSSClient ossClient() {
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
return ossClient;
}
}
@Slf4j
@Configuration
public class FileUploadUtil {
public static final String ERROR_MSG = "上傳失敗";
@Autowired
private AliyunConfig properties;
@Autowired
private OSSClient ossClient;
/**
* 文件上傳觅够,返回新文件上傳后的文件路徑
*
* @param file
* @return
*/
public String upload(MultipartFile file) {
String bucketName = properties.getBucketName();
if (!ossClient.doesBucketExist(bucketName)) {
log.error("您的Bucket不存在玉凯,創(chuàng)建Bucket:" + bucketName + "仲智。");
ossClient.createBucket(bucketName);
}
try {
long beginTime = System.currentTimeMillis();
log.info("上傳文件到oss begin, currentTime: {}", beginTime);
String fileName = file.getOriginalFilename();
// 按日期分目錄存儲(chǔ)
long currentTime = System.currentTimeMillis();
String fileKey = properties.getUploadDir().replace(properties.getSubUploadDirReplacement(), DateFormatUtils.format(currentTime, "yyyy-MM-dd")) + currentTime + fileName;
// 上傳到阿里云
// 桶 名稱 文件流
ossClient.putObject(bucketName, fileKey, file.getInputStream());
log.info("{}存入OSS成功沉帮,共消耗{}秒", fileKey, (System.currentTimeMillis() - beginTime) / 1000d);
// 生成URL
return fileKey;
} catch (IOException e) {
log.error(ERROR_MSG, e.getMessage());
return ERROR_MSG;
} finally {
// 關(guān)閉OSSClient
// ossClient.shutdown();
}
}
/**
*刪除
*/
public boolean deleteFile(String path) {
// path : 桶目錄之后路徑
try {
ossClient.deleteObject(properties.getBucketName(), path);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
}