diff --git a/internal/dal/model/docs.go b/internal/dal/model/docs.go index d394c55..cfc7046 100644 --- a/internal/dal/model/docs.go +++ b/internal/dal/model/docs.go @@ -73,7 +73,7 @@ func (df *DocFolderWithChildren) ToTreeSchema() *schema.DocFolderWithChildren { type Doc struct { Base - Name string `gorm:"column:name;type:varchar;not null"` // 文件夹名称 + Name string `gorm:"column:name;type:varchar;not null"` // 文件名称 IsDeletable bool `gorm:"column:is_deletable;type:boolean;not null;default:true"` // 是否允许被删除 IsEditable bool `gorm:"column:is_editable;type:boolean;not null;default:true"` // 是否允许编辑名称 FolderID string `gorm:"column:folder_id;type:varchar;index:idx_folder_id"` // 文件夹ID @@ -98,7 +98,7 @@ func (d *Doc) ToSchema(ctx context.Context) *schema.Doc { } func (d *Doc) PresignedURL(ctx context.Context) (*url.URL, error) { - return dal.GetStorage().PresignedGetObject(ctx, d.ObjectName, time.Hour) + return dal.GetStorage().PresignedGetObject(ctx, d.ObjectName, time.Hour, d.Name) } func (*Doc) TableName() string { diff --git a/pkg/storage/storage_minio.go b/pkg/storage/storage_minio.go index 4a86fb6..4943188 100644 --- a/pkg/storage/storage_minio.go +++ b/pkg/storage/storage_minio.go @@ -45,8 +45,11 @@ func (m *Storage) PresignedPutObject(ctx context.Context, objectName string, exp } // PresignedGetObject implements ObjectStorage -func (m *Storage) PresignedGetObject(ctx context.Context, objectName string, expires time.Duration) (u *url.URL, err error) { - return m.client.PresignedGetObject(ctx, m.bucket, objectName, expires, nil) +func (m *Storage) PresignedGetObject(ctx context.Context, objectName string, expires time.Duration, fileName string) (u *url.URL, err error) { + p := url.Values{ + "response-content-disposition": []string{"attachment; filename*=utf-8''" + url.QueryEscape("真的吗.txt")}, + } + return m.client.PresignedGetObject(ctx, m.bucket, objectName, expires, p) } // MoveObject implements ObjectStorage