package com.ruoyi.file.utils; import com.amazonaws.ClientConfiguration; import com.amazonaws.Protocol; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.client.builder.AwsClientBuilder.EndpointConfiguration; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import com.amazonaws.services.s3.model.PutObjectResult; import java.io.IOException; import java.io.InputStream; import java.util.UUID; import org.springframework.web.multipart.MultipartFile; /** * 天翼云OBS 工具类 * * @author mitao * @date 2024/6/17 */ public class StateCloudObsUtil { public static String ACCESS_KEY = "MZTCFDOW5SGEC88GNMBV"; public static String SECRET_KEY = "b3HHfKEiEHjyo4ozzN4ZuaveCKvoFUAOPoba44ix"; public static String END_POINT = "obs.cn-sccd1.ctyun.cn"; public static String BUCKET = "jyzx-obs"; public static String DOMAIN = "https://" + BUCKET + "." + END_POINT + "/"; public static AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY); public static String uploadFile(MultipartFile file) { String originalFilename = file.getOriginalFilename(); InputStream inputStream = null; try { inputStream = file.getInputStream(); } catch (IOException e) { throw new RuntimeException(e); } String fileName; AmazonS3 s3client = null; try { ClientConfiguration awsClientConfig = new ClientConfiguration(); awsClientConfig.setSignerOverride("AWSS3V4SignerType"); awsClientConfig.setProtocol(Protocol.HTTP); s3client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withClientConfiguration(awsClientConfig) .withEndpointConfiguration(new EndpointConfiguration(END_POINT, "")) .disableChunkedEncoding() .enablePathStyleAccess() .build(); System.out.print("=====connect success=====\n"); // 上传 object ObjectMetadata objectMetadata = new ObjectMetadata(); fileName = UUID.randomUUID().toString().replaceAll("-", "") + originalFilename.subSequence( originalFilename.lastIndexOf("."), originalFilename.length()); PutObjectRequest request = new PutObjectRequest(BUCKET, fileName, inputStream, objectMetadata); PutObjectResult result = s3client.putObject(request); System.out.format("Etag: %s, versionId: %s\n", result.getETag(), result.getVersionId()); System.out.print("=====request success=====\n"); return DOMAIN + fileName; } catch (Exception e) { System.out.print("=====request fail=====\n"); System.out.print(e.getMessage()); } return null; } public static String obsUploadStream(String code, InputStream content) throws IOException { String fileName = ""; ObjectMetadata objectMetadata = new ObjectMetadata();// 创建上传Object的Metadata fileName = "qrCode/" + UUID.randomUUID().toString().replaceAll("-", "") + "-id" + code + ".png"; AmazonS3 s3client = null; try { ClientConfiguration awsClientConfig = new ClientConfiguration(); awsClientConfig.setSignerOverride("AWSS3V4SignerType"); awsClientConfig.setProtocol(Protocol.HTTP); s3client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withClientConfiguration(awsClientConfig) .withEndpointConfiguration(new EndpointConfiguration(END_POINT, "")) .disableChunkedEncoding() .enablePathStyleAccess() .build(); System.out.print("=====connect success=====\n"); // 上传 object PutObjectRequest request = new PutObjectRequest(BUCKET, fileName, content, objectMetadata); PutObjectResult result = s3client.putObject(request); System.out.format("Etag: %s, versionId: %s\n", result.getETag(), result.getVersionId()); System.out.print("=====request success=====\n"); return DOMAIN + fileName; } catch (Exception e) { System.out.print("=====request fail=====\n"); System.out.print(e.getMessage()); } return fileName; } }