您可以通过临时 URL 访问 TOS,实现数据的安全上传及下载。本文介绍使用临时鉴权 URL 访问 TOS 的方案说明及操作步骤。
在视频监控、APP、Web 等应用情况下,通常有很多图片、文件、视频等信息需要上传到服务端,或者从服务端下载到本地进行使用。在这种业务应用场景下, 你可以充分使用对象存储的 HTTP 访问属性,实现低成本、高质量的数据传输逻辑,同时因为 TOS 服务的 Serverless,可以很好的应对业务的增长或缩小,很好的实现了业务的弹性适配。
使用临时 URL 上传下载方案的优劣势如下所示。
优劣势 | 详情 |
---|---|
优势 |
|
劣势 |
|
说明
其他语言生成临时 URL 的示例代码,请参见 SDK 概述。
package main import ( "context""fmt""github.com/volcengine/ve-tos-golang-sdk/v2/tos" ) func checkErr(err error) { if err != nil { if ServerErr, ok := err.(*tos.TosServerError); ok { fmt.Println("Error:", ServerErr.Error()) fmt.Println("Request ID:", ServerErr.RequestID) fmt.Println("Response Status Code:", ServerErr.StatusCode) fmt.Println("Response Header:", ServerErr.Header) fmt.Println("Response Err Code:", ServerErr.Code) fmt.Println("Response Err Msg:", ServerErr.Message) } else if clientErr, ok := err.(*tos.TosClientError); ok { fmt.Println("Error:", clientErr.Error()) fmt.Println("Client Cause Err:", clientErr.Cause.Error()) } else { fmt.Println("Error:", err) } panic(err) } } func main() { var ( accessKey = "*** Provide your access key ***" secretKey = "*** Provide your secret key ***"// Bucket 对应的 Endpoint,以华北2(北京)为例:https://tos-cn-beijing.volces.com endpoint = "https://tos-cn-beijing.volces.com" region = "cn-beijing"// 填写 RegionID bucketName = "*** Provide your bucket name ***" objectKey = "example_dir/example.txt" ctx = context.Background() // 本地文件完整路径,例如usr/local/testfile.txt fileName = "/usr/local/testfile.txt" ) // 初始化客户端 client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey))) checkErr(err) // 设置请求方法,桶对象名称,过期时间 respTempUrl,errURL:=client.PreSignedURL(&tos.PreSignedURLInput{ HTTPMethod: enum.HttpMethodGet, Bucket: bucketName, Key: objectKey, Expires: 3600, // 单位为秒。 }) checkErr(errURL) fmt.Println(respTempUrl.SignedUrl) }
本文以 Browser.js 代码为例,介绍如何在客户端发送请求。
注意
使用 Web 端开发过程中,设置跨域资源共享(CORS),具体操作,请参见跨域访问设置。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> $(document).ready(function(){ const Url='https://jsonplaceholder.typicode.com/posts' $('.btn').click(function(){ $.ajax({ url: Url, type: "GET" success: function(result){ console.log(result) }, error:function(error){ console.log(`Error ${error}`) } }) }) })