From e55bd7adaed72f5fd8c6b98c7cd5d5f64bcc403b Mon Sep 17 00:00:00 2001 From: withchao <993506633@qq.com> Date: Mon, 10 Jul 2023 17:07:55 +0800 Subject: [PATCH] s3 route --- internal/rpc/third/tool.go | 4 ++-- pkg/common/db/controller/s3.go | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/internal/rpc/third/tool.go b/internal/rpc/third/tool.go index 7461b5747..f59251043 100644 --- a/internal/rpc/third/tool.go +++ b/internal/rpc/third/tool.go @@ -37,8 +37,8 @@ func checkUploadName(ctx context.Context, name string) error { return errs.ErrNoPermission.Wrap("opUserID is empty") } if !tokenverify.IsManagerUserID(opUserID) { - if !strings.HasPrefix(name, opUserID+"_") { - return errs.ErrNoPermission.Wrap(fmt.Sprintf("name must start with `%s_`", opUserID)) + if !strings.HasPrefix(name, opUserID+"/") { + return errs.ErrNoPermission.Wrap(fmt.Sprintf("name must start with `%s/`", opUserID)) } } return nil diff --git a/pkg/common/db/controller/s3.go b/pkg/common/db/controller/s3.go index 3902aa804..f192dadc5 100644 --- a/pkg/common/db/controller/s3.go +++ b/pkg/common/db/controller/s3.go @@ -6,6 +6,7 @@ import ( "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/s3" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/s3/cont" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation" + "path/filepath" "time" ) @@ -61,8 +62,10 @@ func (s *s3Database) AccessURL(ctx context.Context, name string, expire time.Dur return time.Time{}, "", err } opt := &s3.AccessURLOption{ - ContentType: obj.ContentType, - ContentDisposition: `attachment; filename=` + obj.Name, + ContentType: obj.ContentType, + } + if filename := filepath.Base(obj.Name); filename != "" { + opt.ContentDisposition = `attachment; filename=` + filename } expireTime := time.Now().Add(expire) rawURL, err := s.s3.AccessURL(ctx, obj.Key, expire, opt)