You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@answer.apache.org by li...@apache.org on 2025/04/23 09:47:36 UTC
(answer-plugins) 01/03: feat(storage): support to set ACL_PUBLIC_READ ENV
This is an automated email from the ASF dual-hosted git repository.
linkinstar pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/answer-plugins.git
commit 49fbb36573e9074c2f1c8c57d4cbfd51ac9be269
Author: Luffy <52...@qq52o.cn>
AuthorDate: Wed Apr 23 15:50:41 2025 +0800
feat(storage): support to set ACL_PUBLIC_READ ENV
---
storage-aliyunoss/aliyunoss.go | 12 +++++++++++-
storage-aliyunoss/info.yaml | 2 +-
storage-tencentyuncos/info.yaml | 2 +-
storage-tencentyuncos/tencentyuncos.go | 16 +++++++++++++++-
4 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/storage-aliyunoss/aliyunoss.go b/storage-aliyunoss/aliyunoss.go
index 153d177..4bb29e0 100644
--- a/storage-aliyunoss/aliyunoss.go
+++ b/storage-aliyunoss/aliyunoss.go
@@ -25,6 +25,7 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
+ "os"
"path/filepath"
"strings"
"time"
@@ -40,6 +41,11 @@ import (
//go:embed info.yaml
var Info embed.FS
+var (
+ // aclPublicRead is the environment variable for some special platforms such as digital ocean
+ aclPublicRead = os.Getenv("ACL_PUBLIC_READ")
+)
+
type Storage struct {
Config *StorageConfig
}
@@ -121,7 +127,11 @@ func (s *Storage) UploadFile(ctx *plugin.GinContext, condition plugin.UploadFile
ObjectKey: objectKey,
Reader: open,
}
- respBody, err := bucket.DoPutObject(request, nil)
+ var options []oss.Option
+ if len(aclPublicRead) > 0 {
+ options = append(options, oss.ObjectACL(oss.ACLPublicRead))
+ }
+ respBody, err := bucket.DoPutObject(request, options)
if err != nil {
resp.OriginalError = fmt.Errorf("upload file failed: %v", err)
resp.DisplayErrorMsg = plugin.MakeTranslator(i18n.ErrUploadFileFailed)
diff --git a/storage-aliyunoss/info.yaml b/storage-aliyunoss/info.yaml
index cd95814..29a5109 100644
--- a/storage-aliyunoss/info.yaml
+++ b/storage-aliyunoss/info.yaml
@@ -17,6 +17,6 @@
slug_name: aliyunoss_storage
type: storage
-version: 1.2.12
+version: 1.2.13
author: answerdev
link: https://github.com/apache/answer-plugins/tree/main/storage-aliyunoss
diff --git a/storage-tencentyuncos/info.yaml b/storage-tencentyuncos/info.yaml
index 47cc21c..8f97136 100644
--- a/storage-tencentyuncos/info.yaml
+++ b/storage-tencentyuncos/info.yaml
@@ -17,6 +17,6 @@
slug_name: tencentyuncos_storage
type: storage
-version: 1.0.3
+version: 1.0.4
author: Luffy
link: https://github.com/apache/answer-plugins/tree/main/storage-tencentyuncos
diff --git a/storage-tencentyuncos/tencentyuncos.go b/storage-tencentyuncos/tencentyuncos.go
index ec46687..97a69b3 100644
--- a/storage-tencentyuncos/tencentyuncos.go
+++ b/storage-tencentyuncos/tencentyuncos.go
@@ -27,6 +27,7 @@ import (
"fmt"
"net/http"
"net/url"
+ "os"
"path/filepath"
"strings"
"time"
@@ -42,6 +43,11 @@ import (
//go:embed info.yaml
var Info embed.FS
+var (
+ // aclPublicRead is the environment variable for some special platforms such as digital ocean
+ aclPublicRead = os.Getenv("ACL_PUBLIC_READ")
+)
+
type Storage struct {
Config *StorageConfig
}
@@ -122,7 +128,15 @@ func (s *Storage) UploadFile(ctx *plugin.GinContext, condition plugin.UploadFile
defer openFile.Close()
objectKey := s.createObjectKey(file.Filename, condition.Source)
- _, err = client.Object.Put(ctx, objectKey, openFile, nil)
+ var options *cos.ObjectPutOptions
+ if len(aclPublicRead) > 0 {
+ options = &cos.ObjectPutOptions{
+ ACLHeaderOptions: &cos.ACLHeaderOptions{
+ XCosACL: "public-read",
+ },
+ }
+ }
+ _, err = client.Object.Put(ctx, objectKey, openFile, options)
if err != nil {
resp.OriginalError = fmt.Errorf("upload file failed: %v", err)
resp.DisplayErrorMsg = plugin.MakeTranslator(i18n.ErrUploadFileFailed)