fix(knowledge): 图片对象公开读(Ceph 需对象级 ACL)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user