This commit is contained in:
jiangyong 2026-03-17 17:20:43 +08:00
parent 4489f801ca
commit ccc7894e50
3 changed files with 16 additions and 6 deletions

View File

@ -114,7 +114,7 @@ func (s *Minio) List(objectPrefix string) ([]string, error) {
return result, nil return result, nil
} }
func (s *Minio) Url(objectName string, expire time.Duration) string { func (s *Minio) Url(objectName string, expire time.Duration, https ...bool) string {
if err := s.Init(); err != nil { if err := s.Init(); err != nil {
return err.Error() return err.Error()
} }
@ -122,11 +122,19 @@ func (s *Minio) Url(objectName string, expire time.Duration) string {
if expire > time.Hour*24*7 || expire == -1 { if expire > time.Hour*24*7 || expire == -1 {
expire = time.Hour * 24 * 7 expire = time.Hour * 24 * 7
} }
baseUrl := s.config.BaseUrl
if len(https) > 1 && https[0] {
if strings.HasPrefix(baseUrl, "http://") {
baseUrl = "https://" + strings.TrimPrefix(baseUrl, "http://")
}
}
var params url.Values var params url.Values
u, err := s.client.PresignedGetObject(s.config.Bucket, objectName, expire, params) u, err := s.client.PresignedGetObject(s.config.Bucket, objectName, expire, params)
if err != nil { if err != nil {
log.Errorf("error:%s", err.Error()) log.Errorf("error:%s", err.Error())
return fmt.Sprintf("%s/%s/%s", s.config.BaseUrl, s.config.Bucket, objectName) return fmt.Sprintf("%s/%s/%s", baseUrl, s.config.Bucket, objectName)
} }
return u.String() return u.String()

View File

@ -155,7 +155,7 @@ func (s *Qiniu) Get(objectName, fileName string) error {
return Download(url, fileName) return Download(url, fileName)
} }
func (s *Qiniu) Url(objectName string, expire time.Duration) string { func (s *Qiniu) Url(objectName string, expire time.Duration, https ...bool) string {
mac := qbox.NewMac(s.config.AK, s.config.SK) mac := qbox.NewMac(s.config.AK, s.config.SK)
cfg := storage.Config{ cfg := storage.Config{
UseHTTPS: false, UseHTTPS: false,
@ -169,8 +169,10 @@ func (s *Qiniu) Url(objectName string, expire time.Duration) string {
if len(domains) <= 0 { if len(domains) <= 0 {
return "" return ""
} }
domain := "http://" + domains[0].Domain
domain := "https://" + domains[0].Domain if len(https) > 0 && https[0] {
domain = "https://" + domains[0].Domain
}
if expire == 0 { if expire == 0 {
return storage.MakePublicURLv2(domain, objectName) return storage.MakePublicURLv2(domain, objectName)

View File

@ -13,7 +13,7 @@ type Storage interface {
Put(fileName, objectName string, onProcess func(fsize, uploaded int64)) error Put(fileName, objectName string, onProcess func(fsize, uploaded int64)) error
Get(objectName, fileName string) error Get(objectName, fileName string) error
Del(objectName string) error Del(objectName string) error
Url(objectName string, expire time.Duration) string Url(objectName string, expire time.Duration, https ...bool) string //https参数是否生成https参数
Stat(objectName string) (*ObjectInfo, error) Stat(objectName string) (*ObjectInfo, error)
List(objectPrefix string) ([]string, error) List(objectPrefix string) ([]string, error)
Fetch(url, objectName string, local ...bool) error //local参数决定是否先下载到本地在上传七牛云下载企业微信的文件需要不能直接下载 Fetch(url, objectName string, local ...bool) error //local参数决定是否先下载到本地在上传七牛云下载企业微信的文件需要不能直接下载