Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-oss
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xingmin
yd-oss
Commits
49b4a5d1
Commit
49b4a5d1
authored
Mar 13, 2026
by
zhangxingmin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
e1a3082a
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
32 deletions
+24
-32
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
+24
-32
No files found.
yd-oss-service/src/main/java/com/yd/oss/service/service/impl/AliYunOssServiceImpl.java
View file @
49b4a5d1
...
@@ -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
);
// 上传文件
// 上传文件
o
ssClient
.
putObject
(
putObjectRequest
);
realO
ssClient
.
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
);
// 上传文件
// 上传文件
o
ssClient
.
putObject
(
putObjectRequest
);
realO
ssClient
.
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
=
o
ssClient
.
getObject
(
actualBucket
,
fileKey
);
OSSObject
ossObject
=
realO
ssClient
.
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
o
ssClient
.
deleteObject
(
actualBucket
,
ossFile
.
getFileKey
());
realO
ssClient
.
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
=
o
ssClient
.
generatePresignedUrl
(
actualBucket
,
fileKey
,
expirationDate
);
URL
url
=
realO
ssClient
.
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
o
ssClient
.
doesObjectExist
(
actualBucket
,
fileKey
);
return
realO
ssClient
.
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
=
o
ssClient
.
getObjectMetadata
(
actualBucket
,
fileKey
);
ObjectMetadata
objectMetadata
=
realO
ssClient
.
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
.
o
ssClient
;
return
this
.
realO
ssClient
;
}
}
/**
/**
...
@@ -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
.
o
ssClient
!=
null
)
{
if
(
this
.
realO
ssClient
!=
null
)
{
this
.
o
ssClient
.
shutdown
();
this
.
realO
ssClient
.
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 {
);
);
// 上传文件
// 上传文件
o
ssClient
.
putObject
(
putObjectRequest
);
realO
ssClient
.
putObject
(
putObjectRequest
);
// 设置对象访问权限为公共读
// 设置对象访问权限为公共读
o
ssClient
.
setObjectAcl
(
defaultBucket
,
objectName
,
CannedAccessControlList
.
PublicRead
);
realO
ssClient
.
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 {
);
);
// 上传文件
// 上传文件
o
ssClient
.
putObject
(
putObjectRequest
);
realO
ssClient
.
putObject
(
putObjectRequest
);
// 设置对象访问权限为公共读
// 设置对象访问权限为公共读
o
ssClient
.
setObjectAcl
(
defaultBucket
,
objectName
,
CannedAccessControlList
.
PublicRead
);
realO
ssClient
.
setObjectAcl
(
defaultBucket
,
objectName
,
CannedAccessControlList
.
PublicRead
);
// 构造公共访问URL
// 构造公共访问URL
String
publicUrl
=
"https://"
+
defaultBucket
+
"."
+
defaultEndpoint
+
"/"
+
objectName
;
String
publicUrl
=
"https://"
+
defaultBucket
+
"."
+
defaultEndpoint
+
"/"
+
objectName
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment