fix(knowledge): 图片对象公开读(Ceph 需对象级 ACL)
This commit is contained in:
@@ -152,18 +152,24 @@ func (s *S3Service) UploadFile(bucket, key, filePath string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnsureBucket 确保 bucket 存在,不存在则创建(幂等)
|
// EnsureBucket 确保 bucket 存在(不存在则创建),并设为公开读。
|
||||||
|
// 知识库图谱图片属公开内容(Web/小程序直接展示),生产切云 OSS 时同理由 OSS/COS 配置或 CDN 承担。
|
||||||
func (s *S3Service) EnsureBucket(bucket string) error {
|
func (s *S3Service) EnsureBucket(bucket string) error {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
if _, err := s.client.HeadBucket(ctx, &s3.HeadBucketInput{Bucket: aws.String(bucket)}); err == nil {
|
if _, err := s.client.HeadBucket(ctx, &s3.HeadBucketInput{Bucket: aws.String(bucket)}); err != nil {
|
||||||
return 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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// UploadImage 上传图片对象(支持指定 Content-Type)
|
// UploadImage 上传图片对象(支持指定 Content-Type,对象设为公开读供 Web/小程序直接展示)
|
||||||
func (s *S3Service) UploadImage(bucket, key string, body io.Reader, contentType string) error {
|
func (s *S3Service) UploadImage(bucket, key string, body io.Reader, contentType string) error {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
@@ -172,6 +178,7 @@ func (s *S3Service) UploadImage(bucket, key string, body io.Reader, contentType
|
|||||||
Key: aws.String(key),
|
Key: aws.String(key),
|
||||||
Body: body,
|
Body: body,
|
||||||
ContentType: aws.String(contentType),
|
ContentType: aws.String(contentType),
|
||||||
|
ACL: types.ObjectCannedACLPublicRead,
|
||||||
})
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user