From 84d3dac499c02f66eaf1534985f954b5fe4e7863 Mon Sep 17 00:00:00 2001 From: omiku Date: Sun, 20 Jul 2025 21:00:37 +0800 Subject: [PATCH] Handling of expiration times when they may be empty --- pkg/filemanager/driver/ks3/ks3.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/filemanager/driver/ks3/ks3.go b/pkg/filemanager/driver/ks3/ks3.go index 88f5a67..e1ffdf4 100644 --- a/pkg/filemanager/driver/ks3/ks3.go +++ b/pkg/filemanager/driver/ks3/ks3.go @@ -309,12 +309,20 @@ func (handler *Driver) Source(ctx context.Context, e fs.Entity, args *driver.Get contentDescription = aws.String(fmt.Sprintf(`attachment; filename="%s"`, encodedFilename)) } + // 确保过期时间不小于 0 ,如果小于则设置为 7 天 + var ttl int64 + if args.Expire != nil { + ttl = int64(time.Until(*args.Expire).Seconds()) + } else { + ttl = 604800 + } + downloadUrl, err := handler.svc.GeneratePresignedUrl(&s3.GeneratePresignedUrlInput{ - HTTPMethod: s3.GET, // 请求方法 - Bucket: &handler.policy.BucketName, // 存储空间名称 - Key: aws.String(e.Source()), // 对象的key - Expires: int64(time.Until(*args.Expire).Seconds()), // 过期时间,转换为秒数 - ResponseContentDisposition: contentDescription, // 设置响应头部 Content-Disposition + HTTPMethod: s3.GET, // 请求方法 + Bucket: &handler.policy.BucketName, // 存储空间名称 + Key: aws.String(e.Source()), // 对象的key + Expires: ttl, // 过期时间,转换为秒数 + ResponseContentDisposition: contentDescription, // 设置响应头部 Content-Disposition }) if err != nil {