上传外链(GO)

最近更新时间:2022-03-24 17:20:56

以下代码用于生成上传外链:

package ks3test

import (
	"bufio"
	"bytes"
	"github.com/ks3sdklib/aws-sdk-go/aws/awserr"
	"github.com/ks3sdklib/aws-sdk-go/aws/awsutil"
	"net/url"
	"strconv"
	"strings"
	"testing"
	"time"
	//	"io"
	"fmt"
	"github.com/ks3sdklib/aws-sdk-go/aws"
	"github.com/ks3sdklib/aws-sdk-go/aws/credentials"
	"github.com/ks3sdklib/aws-sdk-go/service/s3"
	"net/http"
	"os"
)

var bucket = string("yourbucket")
var key = string("yourkey")
var key_encode = string("yourkey")
var key_copy = string("yourkey")
var content = string("content")
var prefix = "test/" //目录名称

// 金山云主账号 AccessKey 拥有所有API的访问权限,风险很高。
// 强烈建议您创建并使用子账号账号进行 API 访问或日常运维,请登录 https://uc.console.ksyun.com/pro/iam/#/user/list 创建子账号。
// 通过指定 host(Endpoint),您可以在指定的地域创建新的存储空间。
var cre = credentials.NewStaticCredentials("ak", "sk", "") //online
var svc = s3.New(&aws.Config{
	//Region 可参考 [https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761)
	Region:      "BEIJING",
	Credentials: cre,
	//Endpoint 可参考 [https://docs.ksyun.com/documents/6761](https://docs.ksyun.com/documents/6761)
	Endpoint:         "ks3-cn-beijing.ksyuncs.com",
	DisableSSL:       true, //是否禁用https
	LogLevel:         1,    //是否开启日志,0为关闭日志,1为开启日志
	LogHTTPBody:      true, //是否把HTTP请求body打入日志
	Logger:           nil, //打日志的位置
})

//生成上传外链
func TestPutObjectPresignedUrl(t *testing.T) {
	params := &s3.PutObjectInput{
		Bucket:           aws.String(bucket),                    // bucket名称
		Key:              aws.String(key),                       // object key
		ACL:              aws.String("public-read"),             //设置ACL
		ContentType:      aws.String("application/ocet-stream"), //设置文件的content-type
		ContentMaxLength: aws.Long(20),                          //设置允许的最大长度,对应的header:x-amz-content-maxlength
	}
	resp, _ := svc.PutObjectPresignedUrl(params, 1444370289000000000) //第二个参数为外链过期时间,第二个参数为time.Duration类型
	fmt.Println("结果:\n", awsutil.StringValue(resp))

	//简单上传示例
	date := time.Now().UTC().Format(http.TimeFormat)
	httpReq, _ := http.NewRequest("PUT", "", strings.NewReader("123"))
	httpReq.URL = resp
	httpReq.Header["x-amz-acl"] = []string{"public-read"}
	httpReq.Header["x-amz-content-maxlength"] = []string{"20"}
	httpReq.Header.Add("Content-Type", "application/ocet-stream")
	httpReq.Header["Date"] = []string{date}
	upLoadResp, _ := http.DefaultClient.Do(httpReq)
	fmt.Println("结果:\n", awsutil.StringValue(upLoadResp))
}

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈