阿里云存储OSS golang语言上传文件示例。
2016-12-01 15:54
931 查看
由于阿里那边没有提供golang示例只有自己写一个,如果发现问题希望给予纠正。
配置信息自己替换。
调用方法
Putobject("4.txt", []byte("123123fasdfasdfadfadfasfasdfsadf"))
配置信息自己替换。
调用方法
Putobject("4.txt", []byte("123123fasdfasdfadfadfasfasdfsadf"))
package oss import ( "bytes" "crypto/hmac" "crypto/sha1" "encoding/base64" "fmt" "io/ioutil" "mime" "net/http" "path/filepath" "time" ) func authorization(accesskeysecret, method, filemd5, filetype, date, CanonicalizedOSSHeaders, CanonicalizedResource string) string { h := hmac.New(sha1.New, []byte(accesskeysecret)) s := fmt.Sprintf("%v\n%v\n%v\n%v\n%v%v", method, filemd5, filetype, date, CanonicalizedOSSHeaders, CanonicalizedResource) h.Write([]byte(s)) return base64.StdEncoding.EncodeToString(h.Sum(nil)) } var client = &http.Client{Timeout: 20 * time.Second} func Putobject(key string, b []byte) bool { url := fmt.Sprintf("http://%v.%v/%v", config.Cfg.Oss.Bucket, config.Cfg.Oss.Server, key) req, err := http.NewRequest("PUT", url, bytes.NewReader(b)) if err != nil { logger.Debug("Putobject.NewRequest", err) return false } else { defer req.Body.Close() } dt := time.Now().UTC().Format("Mon, 02 Jan 2006 15:04:05 GMT") ct := mime.TypeByExtension(filepath.Ext(key)) req.Header.Add("Content-Length", string(len(b))) req.Header.Add("Content-Type", ct) req.Header.Add("Date", dt) req.Header.Add("Authorization", "OSS "+config.Cfg.Oss.Keyid+":"+authorization(config.Cfg.Oss.Keysecret, "PUT", "", ct, dt, "", "/"+config.Cfg.Oss.Bucket+"/"+key)) if resp, err := client.Do(req); err == nil { if resp_body, err := ioutil.ReadAll(resp.Body); err == nil { if resp.StatusCode == 200 { // for k, v := range resp.Header { // fmt.Printf("%s ==== %s\n", k, v) // } return true } else { logger.Debug("OSS错误返回|", url, ":", string(resp.StatusCode), ":", string(resp_body)) return false } } else { logger.Debug("Putobject.ioutil.ReadAll", err) return false } } else { logger.Debug("Putobject.client.Do", err) return false } }
相关文章推荐
- 阿里云对象存储OSS配置介绍设置,上传代码示例
- 阿里云存储OSS中设置上传文件content type
- 阿里云oss post上传文件 JavaScript代码示例 $.ajax()
- OSS阿里云存储——整合Spring文件上传,实现动静网站资源分离
- 文件上传-阿里云OSS-存储文件
- yii2.0整合阿里云oss上传单个文件的示例
- 上传文件到阿里云OSS对象存储,查询访问地址,删除文件
- 上传阿里云oss对象型存储 本地文件和上传流上传
- 阿里云对象存储OSS--实现随时随地上传文件到阿里云
- 【阿里云产品公测】ACE下上传文件永久存储实践
- 构建基于阿里云OSS文件上传服务
- 阿里云OSS 上传文件
- 在thinkphp中使用阿里云OSS自定义驱动上传文件
- Jfinal版阿里云OSS文件上传
- OneThink后台配置阿里云OSS文件上传
- 使用grunt上传文件到阿里云(对ali-oss进行grunt封装)
- 构建基于阿里云OSS的第三方文件上传RESTful接口
- Android阿里云OSS多文件同步上传和删除方案
- 构建基于阿里云OSS文件上传服务