详情页标题前

阿里云对象存储OSS使用Go SDK以签名Header的方式上传文件-云淘科技

详情页1

本文介绍如何使用Go SDK以签名Header的方式上传文件。

示例代码

以下以Go SDK 1.7.6版本为例,说明如何通过签名Header的方式上传文件。

package main

import (
  "crypto/hmac"
  "crypto/sha1"
  "encoding/base64"
  "fmt"
  "io/ioutil"
  "net/http"
  "os"
  "strings"
  "time"
)

func main() {
  // 填写Bucket名称,例如examplebucket。
  bucketname := "examplebucket"
  // 填写Bucket的外网访问Endpoint。
  endpoint := "oss-cn-hangzhou.aliyuncs.com"
  // 指定上传至Bucket中Object的完整路径,完整路径中不能包含Bucket名称。
  objectname := "examplefile.txt"
  // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accesskey := os.Getenv("OSS_ACCESS_KEY_ID") 
  accesskeysecret := os.Getenv("OSS_ACCESS_KEY_SECRET") 
  contenttype := "application/json"
  gmtdate := time.Now().UTC().Format(http.TimeFormat)
  stringtosgin := "PUT

" + contenttype + "
" + gmtdate + "
" + "/" + bucketname + "/" + objectname
  
  key := []byte(accesskeysecret)
  mac := hmac.New(sha1.New, key)
  mac.Write([]byte(stringtosgin))
  // Base64编码。
  signature := base64.StdEncoding.EncodeToString(mac.Sum(nil))

  url := "http://" + bucketname + "." + endpoint + "/" + objectname

  payload := strings.NewReader("{go:test}")

  req, _ := http.NewRequest("PUT", url, payload)

  req.Header.Add("Content-Type", contenttype)
  req.Header.Add("Authorization", "OSS "+accesskey+":"+signature)
  req.Header.Add("Date", gmtdate)
  res, _ := http.DefaultClient.Do(req)

  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}

输出结果如下。

&{200 OK 200 HTTP/1.1 1 1 map[Connection:[keep-alive] Content-Length:[0] Content-Md5:[BBFHkvGJ4s7YGacim2mbCg==] Date:[Thu, 14 Sep 2023 09:28:19 GMT] Etag:["04114792F189E2CED819A7229B69****"] Server:[AliyunOSS] X-Oss-Hash-Crc64ecma:[1342951013225723****] X-Oss-Request-Id:[6502D233818A31353126****] X-Oss-Server-Time:[126]] {} 0 [] false false map[] 0xc000134000 }

相关文档

在Header中包含签名

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/159711.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。