fix(knowledge): 图片对象公开读(Ceph 需对象级 ACL)

This commit is contained in:
weijuesen
2026-08-12 12:17:07 +08:00
parent 3bb1efae57
commit 7647705f3b
+12 -5
View File
@@ -152,18 +152,24 @@ func (s *S3Service) UploadFile(bucket, key, filePath string) error {
return err
}
// EnsureBucket 确保 bucket 存在不存在则创建(幂等
// EnsureBucket 确保 bucket 存在不存在则创建),并设为公开读。
// 知识库图谱图片属公开内容(Web/小程序直接展示),生产切云 OSS 时同理由 OSS/COS 配置或 CDN 承担。
func (s *S3Service) EnsureBucket(bucket string) error {
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
if _, err := s.client.HeadBucket(ctx, &s3.HeadBucketInput{Bucket: aws.String(bucket)}); err == nil {
return nil
if _, err := s.client.HeadBucket(ctx, &s3.HeadBucketInput{Bucket: aws.String(bucket)}); err != nil {
if _, err := s.client.CreateBucket(ctx, &s3.CreateBucketInput{Bucket: aws.String(bucket)}); err != nil {
return err
}
}
_, err := s.client.CreateBucket(ctx, &s3.CreateBucketInput{Bucket: aws.String(bucket)})
_, err := s.client.PutBucketAcl(ctx, &s3.PutBucketAclInput{
Bucket: aws.String(bucket),
ACL: types.BucketCannedACLPublicRead,
})
return err
}
// UploadImage 上传图片对象(支持指定 Content-Type
// UploadImage 上传图片对象(支持指定 Content-Type,对象设为公开读供 Web/小程序直接展示
func (s *S3Service) UploadImage(bucket, key string, body io.Reader, contentType string) error {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()
@@ -172,6 +178,7 @@ func (s *S3Service) UploadImage(bucket, key string, body io.Reader, contentType
Key: aws.String(key),
Body: body,
ContentType: aws.String(contentType),
ACL: types.ObjectCannedACLPublicRead,
})
return err
}