第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何在 Go 中使用帶有自定義標(biāo)頭的 gcp 簽名 url

如何在 Go 中使用帶有自定義標(biāo)頭的 gcp 簽名 url

Go
catspeake 2022-11-08 15:43:56
我正在嘗試動態(tài)設(shè)置標(biāo)題部分中的 x-goog-meta-reference,因此我想在函數(shù)簽名中傳遞一個(gè)名為 reference 的參數(shù),并將其分配給標(biāo)題中的 x-goog-meta-reference。請參閱x-goog-meta-reference下面的代碼示例。我關(guān)注了這個(gè)關(guān)于規(guī)范請求的鏈接。我的示例代碼來自這里,但它是我的產(chǎn)品代碼的編輯版本。func GenerateSignedURL(ctx context.Context, bucket string, key string, expiration time.Time,) (string, error) {    gcsClient, err := storage.NewClient(ctx)    if err != nil {        return "", fmt.Errorf("storage.NewClient: %v", err)    }    defer gcsClient.Close()    storage.SignedURL()    opts := &storage.SignedURLOptions{        Scheme:      storage.SigningSchemeV4,        Method:      "PUT",        ContentType: "text/csv",        Headers:     []string{            "x-goog-meta-reference: xxx", // << I want xxx value to be whatever I pass to this function as an arg        },        Expires:     expiration,    }    url, err := gcsClient.Bucket(bucket).SignedURL(key, opts)    if err != nil {        log.WithContext(ctx).Warn("Failed to generate a GCS signed URL")        return "", err    }    return url, nil}我嘗試查看一些示例,但它們都是 s3 并且我沒有遇到任何 gcp 示例代碼。但是,我確實(shí)發(fā)現(xiàn)了這個(gè)問題,但我自己無法弄清楚。
查看完整描述

1 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

正如@dazwilkin提到的那樣,fmt.Sprintf對于這種情況來說已經(jīng)足夠了,但是您也可以使用我從mozilla移植的這個(gè)

import (

    "context"

    "fmt"

    "time"


    "cloud.google.com/go/storage"

    "github.com/dkbyo/go-stringhttpheader"

)


type Headers struct {

    GoogleMetaReference string `header:"x-goog-meta-reference"`

}


func GenerateSignedURL(bucket string, key string, expiration time.Time,

) (string, error) {

    ctx := context.Background()

    gcsClient, err := storage.NewClient(ctx)

    if err != nil {

        return "", fmt.Errorf("storage.NewClient: %v", err)

    }

    defer gcsClient.Close()

    headers := Headers{

        GoogleMetaReference: "xxx",

    }

    fmt.Print(stringhttpheader.Encode(headers))

    stringheaders, _ := stringhttpheader.Encode(headers)

    //storage.SignedURL()

    opts := &storage.SignedURLOptions{

        Scheme:      storage.SigningSchemeV4,

        Method:      "PUT",

        ContentType: "text/csv",

        Headers:     stringheaders,

        Expires:     expiration,

    }


    url, err := gcsClient.Bucket(bucket).SignedURL(key, opts)

    if err != nil {

        log.WithContext(ctx).Warn("Failed to generate a GCS signed URL")

        return "", err

    }


    return url, nil

}


查看完整回答
反對 回復(fù) 2022-11-08
  • 1 回答
  • 0 關(guān)注
  • 131 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號