Commit 49b4a5d1 by zhangxingmin

push

parent e1a3082a
......@@ -48,8 +48,10 @@ public class AliYunOssServiceImpl implements OssService {
@Autowired
private IOssFileService ossFileService;
@Autowired
private OSS ossClient; // 注入OSS客户端
// @Autowired
// private OSS realOssClient; // 注入OSS客户端
private OSS realOssClient; // 真实客户端
@Autowired
private String defaultBucket; // 注入默认存储桶
......@@ -102,7 +104,7 @@ public class AliYunOssServiceImpl implements OssService {
actualBucket, fileKey, byteArrayInputStream, metadata);
// 上传文件
ossClient.putObject(putObjectRequest);
realOssClient.putObject(putObjectRequest);
// 创建文件记录
ossFile = new OssFile();
......@@ -229,7 +231,7 @@ public class AliYunOssServiceImpl implements OssService {
actualBucket, fileKey, byteArrayInputStream, metadata);
// 上传文件
ossClient.putObject(putObjectRequest);
realOssClient.putObject(putObjectRequest);
// 创建文件记录
ossFile = new OssFile();
......@@ -342,7 +344,7 @@ public class AliYunOssServiceImpl implements OssService {
ossFile = ossFileService.getFileByKey(fileKey);
// 从阿里云OSS下载文件
OSSObject ossObject = ossClient.getObject(actualBucket, fileKey);
OSSObject ossObject = realOssClient.getObject(actualBucket, fileKey);
InputStream inputStream = ossObject.getObjectContent();
// 创建操作日志
......@@ -420,7 +422,7 @@ public class AliYunOssServiceImpl implements OssService {
ossFile = ossFileService.getFileByKey(fileKey);
// 从阿里云OSS删除文件 TODO
ossClient.deleteObject(actualBucket, ossFile.getFileKey());
realOssClient.deleteObject(actualBucket, ossFile.getFileKey());
// 标记文件为已删除
ossFileService.markFileAsDeleted(fileKey);
......@@ -494,7 +496,7 @@ public class AliYunOssServiceImpl implements OssService {
// 生成预签名URL(带过期时间)
Date expirationDate = new Date(System.currentTimeMillis() + expiration.toMillis());
URL url = ossClient.generatePresignedUrl(actualBucket, fileKey, expirationDate);
URL url = realOssClient.generatePresignedUrl(actualBucket, fileKey, expirationDate);
return url.toString();
} catch (Exception e) {
......@@ -528,7 +530,7 @@ public class AliYunOssServiceImpl implements OssService {
String actualBucket = StringUtils.isNotBlank(bucketName) ? bucketName : defaultBucket;
// 检查文件是否存在
return ossClient.doesObjectExist(actualBucket, fileKey);
return realOssClient.doesObjectExist(actualBucket, fileKey);
} catch (Exception e) {
log.error("阿里云OSS检查文件存在失败: {}", fileKey, e);
throw new RuntimeException("阿里云OSS检查文件存在失败: " + fileKey, e);
......@@ -559,7 +561,7 @@ public class AliYunOssServiceImpl implements OssService {
String actualBucket = StringUtils.isNotBlank(bucketName) ? bucketName : defaultBucket;
// 获取文件元数据
ObjectMetadata objectMetadata = ossClient.getObjectMetadata(actualBucket, fileKey);
ObjectMetadata objectMetadata = realOssClient.getObjectMetadata(actualBucket, fileKey);
// 转换为通用文件元数据格式
FileMetadata metadata = new FileMetadata();
......@@ -602,15 +604,9 @@ public class AliYunOssServiceImpl implements OssService {
log.info("已切换到OSS提供商: {}", provider.getName());
} catch (Exception e) {
// 安全打印,避免 Logback 处理
System.err.println("捕获到异常: " + e.getClass().getName() + " - " + e.getMessage());
e.printStackTrace(System.err); // 如果这也 StackOverflow,说明异常对象本身有问题
// 如果上面依然 StackOverflow,则只打印类名和消息
// System.err.println("异常类: " + e.getClass().getName());
log.error("切换OSS提供商失败:{}",e.getMessage());
// 然后可以尝试抛出异常(注意不要再次记录日志)
throw new RuntimeException("切换OSS提供商失败", e);
throw new RuntimeException("切换OSS提供商失败");
}
}
......@@ -661,7 +657,7 @@ public class AliYunOssServiceImpl implements OssService {
@Override
public OSS getOssClient() {
// 返回当前实例持有的客户端
return this.ossClient;
return this.realOssClient;
}
/**
......@@ -669,22 +665,18 @@ public class AliYunOssServiceImpl implements OssService {
* @param provider
*/
private void switchToProvider(OssProvider provider) {
// 关闭旧的客户端
if (this.ossClient != null) {
this.ossClient.shutdown();
// 关闭旧的真实客户端
if (this.realOssClient != null) {
this.realOssClient.shutdown();
}
// 注入服务商
this.currentProvider = provider;
// 注入服务商对应的OSS客户端
this.ossClient = new OSSClientBuilder().build(
// 创建新的真实客户端
this.realOssClient = new OSSClientBuilder().build(
provider.getEndpoint(),
provider.getAccessKey(),
provider.getSecretKey()
);
// 注入桶
this.currentProvider = provider;
this.defaultBucket = provider.getBucketName();
// 注入服务端点
this.defaultEndpoint = provider.getEndpoint();
}
......@@ -781,10 +773,10 @@ public class AliYunOssServiceImpl implements OssService {
);
// 上传文件
ossClient.putObject(putObjectRequest);
realOssClient.putObject(putObjectRequest);
// 设置对象访问权限为公共读
ossClient.setObjectAcl(defaultBucket, objectName, CannedAccessControlList.PublicRead);
realOssClient.setObjectAcl(defaultBucket, objectName, CannedAccessControlList.PublicRead);
// 构造公共访问URL
String publicUrl = "https://" + defaultBucket + "." + defaultEndpoint + "/" + objectName;
......@@ -814,10 +806,10 @@ public class AliYunOssServiceImpl implements OssService {
);
// 上传文件
ossClient.putObject(putObjectRequest);
realOssClient.putObject(putObjectRequest);
// 设置对象访问权限为公共读
ossClient.setObjectAcl(defaultBucket, objectName, CannedAccessControlList.PublicRead);
realOssClient.setObjectAcl(defaultBucket, objectName, CannedAccessControlList.PublicRead);
// 构造公共访问URL
String publicUrl = "https://" + defaultBucket + "." + defaultEndpoint + "/" + objectName;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment