大佬好,感谢开源该工具。我配置过程中发现,目前仅支持Amazon S3,同类的兼容S3协议的服务商(如腾讯云、七牛云、缤纷云等)不能通过修改Endpoint 来实现。
Go代码之前没写过,得益于vibe coding,我提出思路后让AI帮改了,经过修改及调试后,已经修改并测试成功了。
由于是AI写的代码,也不知道质量能否达到要求,就不直接提交具体代码了,我把关键修改点发出来,可供参考:
为了支持 S3 协议的自定义服务商(如腾讯云、七牛云、缤纷云等),主要修改了以下几个关键位置:
1. 后端核心代码修改 (pkg/storage/aws_s3/s3.go)
在 S3 结构体和初始化逻辑中增加了对 Endpoint 的支持。
结构体 Config 增加字段: 在 Config 结构体中新增了 Endpoint 字段,用于接收 yaml 或数据库中的 endpoint 配置。
type Config struct {
// ... 其他字段
Endpoint string yaml:"endpoint" // [新增]
}
NewClient 函数解析配置: 从传入的配置 map (cf) 中读取 Endpoint 值。
var endpoint string
if v, ok := cf["Endpoint"]; ok && v != nil {
endpoint = v.(string)
}
配置 s3.Client 使用自定义 Endpoint: 在创建 SDK 客户端时 (s3.NewFromConfig),将读取到的 endpoint 赋值给 SDK 的 BaseEndpoint 参数。这是让 SDK 不去连接默认的 AWS 服务器,而是连接第三方服务商。
client := s3.NewFromConfig(cfg, func(o *s3.Options) {
if conf.Endpoint != "" {
o.BaseEndpoint = &conf.Endpoint
}
})
2. 配置文件修改 (config/config.yaml)
在 aws-s3 节点下新增了 endpoint 配置项,可以指定自定义接入点。
3. 前端修改
注入输入框:在 S3 配置表单中,插入了 Endpoint (节点) 的输入框。
作用:如果没有这个修改,在多用户面板中,用户即使想填 Endpoint 也没有地方填,后端收到的永远是空字符串,导致功能不可用。
已经能满足上传和下载的自用要求了,再次感谢大佬。
大佬好,感谢开源该工具。我配置过程中发现,目前仅支持Amazon S3,同类的兼容S3协议的服务商(如腾讯云、七牛云、缤纷云等)不能通过修改Endpoint 来实现。
Go代码之前没写过,得益于vibe coding,我提出思路后让AI帮改了,经过修改及调试后,已经修改并测试成功了。
由于是AI写的代码,也不知道质量能否达到要求,就不直接提交具体代码了,我把关键修改点发出来,可供参考:
为了支持 S3 协议的自定义服务商(如腾讯云、七牛云、缤纷云等),主要修改了以下几个关键位置:
1. 后端核心代码修改 (pkg/storage/aws_s3/s3.go)
在 S3 结构体和初始化逻辑中增加了对 Endpoint 的支持。
结构体 Config 增加字段: 在 Config 结构体中新增了 Endpoint 字段,用于接收 yaml 或数据库中的 endpoint 配置。
type Config struct {
// ... 其他字段
Endpoint string
yaml:"endpoint"// [新增]}
NewClient 函数解析配置: 从传入的配置 map (cf) 中读取 Endpoint 值。
var endpoint string
if v, ok := cf["Endpoint"]; ok && v != nil {
endpoint = v.(string)
}
配置 s3.Client 使用自定义 Endpoint: 在创建 SDK 客户端时 (s3.NewFromConfig),将读取到的 endpoint 赋值给 SDK 的 BaseEndpoint 参数。这是让 SDK 不去连接默认的 AWS 服务器,而是连接第三方服务商。
client := s3.NewFromConfig(cfg, func(o *s3.Options) {
if conf.Endpoint != "" {
o.BaseEndpoint = &conf.Endpoint
}
})
2. 配置文件修改 (config/config.yaml)
在 aws-s3 节点下新增了 endpoint 配置项,可以指定自定义接入点。
3. 前端修改
注入输入框:在 S3 配置表单中,插入了 Endpoint (节点) 的输入框。
作用:如果没有这个修改,在多用户面板中,用户即使想填 Endpoint 也没有地方填,后端收到的永远是空字符串,导致功能不可用。
已经能满足上传和下载的自用要求了,再次感谢大佬。