70 lines
2.9 KiB
Java
70 lines
2.9 KiB
Java
package com.sky.utils;
|
||
|
||
import com.aliyun.oss.ClientBuilderConfiguration;
|
||
import com.aliyun.oss.OSS;
|
||
import com.aliyun.oss.OSSClientBuilder;
|
||
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
|
||
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
|
||
import com.aliyun.oss.common.comm.SignVersion;
|
||
import com.aliyun.oss.model.PutObjectRequest;
|
||
import com.aliyun.oss.model.PutObjectResult;
|
||
import com.aliyuncs.exceptions.ClientException;
|
||
import com.sky.properties.InmindAliOSSProperties;
|
||
import lombok.AllArgsConstructor;
|
||
import lombok.Data;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.stereotype.Component;
|
||
import org.springframework.web.multipart.MultipartFile;
|
||
|
||
import java.io.IOException;
|
||
import java.io.InputStream;
|
||
import java.util.UUID;
|
||
|
||
/**
|
||
* 阿里云 OSS 工具类
|
||
*/
|
||
@Data
|
||
@AllArgsConstructor
|
||
public class InmindAliOSSUtils {
|
||
|
||
/*@Value("${aliyun.oss.endpoint}")
|
||
private String endpoint;
|
||
@Value("${aliyun.oss.bucketName}")
|
||
private String bucketName;
|
||
@Value("${aliyun.oss.region}")
|
||
private String region ;*/
|
||
InmindAliOSSProperties aliOSSProperties;
|
||
|
||
/**
|
||
* 实现上传图片到OSS
|
||
*/
|
||
public String upload(MultipartFile file) throws IOException, ClientException {
|
||
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
|
||
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
|
||
// 获取上传的文件的输入流
|
||
InputStream inputStream = file.getInputStream();
|
||
// 避免文件覆盖
|
||
String originalFilename = file.getOriginalFilename();
|
||
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
|
||
//上传文件到 OSS
|
||
// 创建OSSClient实例。
|
||
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
|
||
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
|
||
OSS ossClient = OSSClientBuilder.create()
|
||
.endpoint(aliOSSProperties.getEndpoint())
|
||
.credentialsProvider(credentialsProvider)
|
||
.clientConfiguration(clientBuilderConfiguration)
|
||
.region(aliOSSProperties.getRegion())
|
||
.build();
|
||
// 创建PutObjectRequest对象。
|
||
PutObjectRequest putObjectRequest = new PutObjectRequest(aliOSSProperties.getBucketName(), fileName, inputStream);
|
||
PutObjectResult result = ossClient.putObject(putObjectRequest);
|
||
//文件访问路径
|
||
String url = aliOSSProperties.getEndpoint().split("//")[0] + "//" + aliOSSProperties.getBucketName() + "." + aliOSSProperties.getEndpoint().split("//")[1] + "/" + fileName;
|
||
// 关闭ossClient
|
||
ossClient.shutdown();
|
||
return url;// 把上传到oss的路径返回
|
||
}
|
||
|
||
}
|