mirror of
https://gitee.com/zhijiantianya/ruoyi-vue-pro.git
synced 2026-10-06 07:22:59 +08:00
!1588 修复阿里云 OSS 和七牛云前端直传签名地址生成问题
Merge pull request !1588 from 司徒俊杰/master-jdk17
This commit is contained in:
+6
@@ -173,6 +173,12 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
|
||||
* @return 节点地址
|
||||
*/
|
||||
private String buildPresignerEndpoint() {
|
||||
// 阿里云 OSS、七牛云的自定义域名仅用于文件访问,不能作为 S3 签名节点。
|
||||
// Presigner 必须使用服务商提供的 endpoint,否则生成的签名无法用于直传。
|
||||
if (StrUtil.contains(config.getEndpoint(), S3FileClientConfig.ENDPOINT_ALIYUN)
|
||||
|| StrUtil.contains(config.getEndpoint(), S3FileClientConfig.ENDPOINT_QINIU)) {
|
||||
return buildEndpoint();
|
||||
}
|
||||
// 补全 domain
|
||||
if (StrUtil.isEmpty(config.getDomain())) {
|
||||
config.setDomain(buildDomain());
|
||||
|
||||
+36
@@ -69,6 +69,42 @@ public class S3FileClientTest {
|
||||
assertFalse(result.contains("%25E4%25B8%25AD"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPresignPutUrl_aliyunUsesEndpointInsteadOfCustomDomain() {
|
||||
S3FileClientConfig config = new S3FileClientConfig();
|
||||
config.setAccessKey("access-key");
|
||||
config.setAccessSecret("access-secret");
|
||||
config.setBucket("test-bucket");
|
||||
config.setDomain("https://custom.example.com");
|
||||
config.setEndpoint("oss-cn-beijing.aliyuncs.com");
|
||||
config.setEnablePathStyleAccess(false);
|
||||
config.setEnablePublicAccess(false);
|
||||
S3FileClient client = new S3FileClient(0L, config);
|
||||
client.init();
|
||||
|
||||
String result = client.presignPutUrl("avatar.jpg");
|
||||
|
||||
assertTrue(result.startsWith("https://test-bucket.oss-cn-beijing.aliyuncs.com/"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPresignPutUrl_qiniuUsesEndpointInsteadOfCustomDomain() {
|
||||
S3FileClientConfig config = new S3FileClientConfig();
|
||||
config.setAccessKey("access-key");
|
||||
config.setAccessSecret("access-secret");
|
||||
config.setBucket("test-bucket");
|
||||
config.setDomain("https://custom.example.com");
|
||||
config.setEndpoint("s3-cn-south-1.qiniucs.com");
|
||||
config.setEnablePathStyleAccess(false);
|
||||
config.setEnablePublicAccess(false);
|
||||
S3FileClient client = new S3FileClient(0L, config);
|
||||
client.init();
|
||||
|
||||
String result = client.presignPutUrl("avatar.jpg");
|
||||
|
||||
assertTrue(result.startsWith("https://test-bucket.s3-cn-south-1.qiniucs.com/"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Disabled // MinIO,如果要集成测试,可以注释本行
|
||||
public void testMinIO() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user