获取对象
GetObject操作可以获取对象数据,并且保存为本地文件。执行GetObject操作必须对目标Object具有READ权限。
代码示例:
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using Amazon.Runtime;
using Amazon.S3;
using Amazon.S3.Model;
namespace DotNetSDK.ObjectOperation
{
public class GetObjectExample
{
public static async Task GetObject()
{
var accessKey = "YOUR_ACCESS_KEY";
var secretKey = "YOUR_SECRET_KEY";
var endpoint = "YOUR_ENDPOINT";
var bucketName = "EXAMPLE_BUCKET";
var key = "EXAMPLE_KEY";
var filePath = "LOCAL_FILE_PATH";
try
{
var credentials = new BasicAWSCredentials(accessKey, secretKey);
var conf = new AmazonS3Config
{
ServiceURL = endpoint
};
var s3Client = new AmazonS3Client(credentials, conf);
var getObjectRequest = new GetObjectRequest()
{
BucketName = bucketName,
Key = key
};
using (var result = await s3Client.GetObjectAsync(getObjectRequest))
using (Stream stream = result.ResponseStream)
{
var fileStream = File.Create(filePath);
await stream.CopyToAsync(fileStream);
fileStream.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
GetObjectRequest可设置的参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
BucketName | string | bucket的名称。 | 是 |
EtagToMatch | string | 用于指定只有在对象的ETag和该参数值匹配的情况下才返回对象数据,否则返回412错误码。 | 否 |
ModifiedSinceDateUtc | DateTime | 用于只有当对象在指定时间后被修改的情况下才返回该对象,否则返回304错误码。 | 否 |
EtagToNotMatch | string | 用于指定只有在对象的ETag和该参数值不匹配的情况下才返回对象数据,否则返回304错误码 | 否 |
UnmodifiedSinceDateUtc | DateTime | 用于仅当对象自指定时间以来未被修改的情况下才返回对象数据,否则返回412错误码。 | 否 |
Key | string | 对象的key。 | 是 |
PartNumber | int | 读取对象指定的片段,该参数大于等于1,小于等于10000。 | 否 |
ByteRange | ByteRange | 下载对象指定范围内的数据(单位:字节)。 | 否 |
VersionId | string | 当bucket开启版本控制的时候,用于指定获取指定版本的对象数据,当不指定该参数的时候,默认获取最新版本的对象数据。 | 否 |
GetObject返回的结果如下:
参数 | 类型 | 说明 |
---|---|---|
BucketName | string | 对象所在bucket的名称。 |
ContentLength | long | 对象数据的长度,单位为字节。 |
ETag | string | 对象的Entity Tag。 |
LastModified | DateTime | 最后修改对象的时间。 |
TagCount | int | 对象标签的数量。 |
VersionId | string | 对象的版本ID。 |
响应结果:
HTTP状态码 | 响应码 | 描述 |
---|---|---|
200 | OK | 操作成功。 |
400 | BadRequest | 上传的文件太大或者对象的名字不合法。 |
403 | Forbidden | 用户没有权限执行操作。 |
404 | NotFound | 操作指定的bucket或者对象不存在。 |