阅读538 返回首页    go 阿里云 go 技术社区[云栖]


阿里云 OSS 文件上传全解析

阿里云 OSS(Object Storage Service)是一种海量、安全、低成本、高可靠的云存储服务。它可以便捷地存储和访问互联网上的任何内容,包括但不限于图片、音频、视频、日志等非结构化数据。

阿里云 OSS 提供了多种上传方式,包括普通上传、分片上传、加速上传和自定义上传。下面我们就逐一介绍这些上传方式的具体使用方法和适用场景。

普通上传

普通上传适用于小文件(文件大小小于 5MB)的上传。它的使用流程如下:

1. 首先,使用 PutObject 方法初始化一个上传请求。 2. 然后,将文件内容写入请求中。 3. 最后,关闭请求并等待响应。

示例代码如下:

``` import oss2 # 初始化一个上传请求 request = ('your-bucket', 'your-object-key') # 设置文件内容 = 'Hello, OSS!' # 上传文件 (client, 'your-bucket').put_object(request) ```

分片上传

分片上传适用于大文件(文件大小大于 5MB)的上传。它可以将文件分割成多个块,并行上传这些块,从而提高上传效率和稳定性。

分片上传的使用流程如下:

1. 首先,使用 InitiateMultipartUpload 方法初始化一个分片上传请求。 2. 然后,使用 UploadPart 方法上传文件的分片。 3. 最后,使用 CompleteMultipartUpload 方法完成分片上传。

示例代码如下:

``` import oss2 # 初始化一个分片上传请求 request = ('your-bucket', 'your-object-key') upload_id = (client, 'your-bucket').initiate_multipart_upload(request) # 上传文件的分片 part_size = 1024 * 1024 with open('your-file-path', 'rb') as file_object: for i in range(0, (0, 2) // part_size + 1): request = ('your-bucket', 'your-object-key', upload_id, i) = (part_size) (client, 'your-bucket').upload_part(request) # 完成分片上传 request = ('your-bucket', 'your-object-key', upload_id) result = (client, 'your-bucket').complete_multipart_upload(request) ```

加速上传

加速上传是一种利用阿里云 CDN 节点上传文件的技术。它可以将文件上传到离用户最近的 CDN 节点,从而显着提高文件上传速度。

加速上传的使用流程与普通上传类似,但需要使用加速域名作为请求地址。

示例代码如下:

``` import oss2 # 使用加速域名作为请求地址 request = ('-endpoint', 'your-object-key') # 设置文件内容 = 'Hello, OSS!' # 上传文件 (client, 'your-bucket').put_object(request) ```

自定义上传

自定义上传允许用户自定义上传请求并处理上传响应。它提供了最大的灵活性,但需要用户自己处理请求和响应的具体细节。

自定义上传的使用流程如下:

1. 首先,使用 CreateUploadId 方法获取一个上传 ID。 2. 然后,使用 UploadPart 方法上传文件的分片。 3. 最后,使用 CompleteUpload 方法完成分片上传。

示例代码如下:

``` import oss2 # 获取一个上传 ID upload_id = (client, 'your-bucket').create_upload_id('your-object-key') # 上传文件的分片 part_size = 1024 * 1024 with open('your-file-path', 'rb') as file_object: for i in range(0, (0, 2) // part_size + 1): request = ( 'your-bucket', 'your-object-key', upload_id, i) = (part_size) (client, 'your-bucket').upload_part(request) # 完成分片上传 request = ('your-bucket', 'your-object-key', upload_id) result = (client, 'your-bucket').complete_upload(request) ```

上传策略

在上传文件时,还可以使用上传策略来控制文件的访问权限、存储类型等信息。上传策略是一个 JSON 文档,其中包含了相关配置信息。

要使用上传策略,可以通过以下几种方式:

* 直接将上传策略作为请求的正文。 * 使用签名的 URL 上传文件。 * 使用 SDK 内置的方法上传文件。

示例策略如下:

```json { "expiration": "2023-01-01T12:00:00.000Z", "conditions": [ {"bucket": "your-bucket"}, {"key": "your-object-key"}, {"acl": "public-read"}, {"storageClass": "STANDARD"} ] } ```

阿里云 OSS 提供了多种上传方式,可以满足不同场景下的文件上传需求。用户可以根据文件的实际情况和上传需求选择合适的上传方式,以获得最佳的上传体验。

最后更新:2024-11-22 22:14:23

  上一篇:go 阿里云OSS:您的文件存储与管理利器
  下一篇:go 深入浅出:阿里云服务器登陆指南