Commit 49b4a5d1 by zhangxingmin

push

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