融合接口
SDK提供封装好的融合接口,方便用户实现分片上传的功能。
接口定义:
public void Upload(string filePath, string bucketName, string key);
public void Upload(Stream stream, string bucketName, string key);
public void Upload(TransferUtilityUploadRequest request);
public Task UploadAsync(string filePath, string bucketName, string key, CancellationToken cancellationToken = default);
public Task UploadAsync(Stream stream, string bucketName, string key, CancellationToken cancellationToken = default);
public Task UploadAsync(TransferUtilityUploadRequest request, CancellationToken cancellationToken = default);
参数:
参数名 | 类型 | 说明 |
---|---|---|
bucketName | string | bucket名 |
key | string | 要上传的对象名称 |
filePath | string | 上传的文件路径(和stream二选一) |
stream | Stream | 上传的文件流(和filePath二选一) |
request | TransferUtilityUploadRequest | 上传请求 |
TransferUtilityUploadRequest主要参数:
参数名 | 类型 | 说明 |
---|---|---|
BucketName | string | bucket名 |
Key | string | 要上传的对象名称 |
FilePath | string | 上传的文件路径(和InputStream二选一) |
InputStream | Stream | 上传的文件流(和FilePath二选一) |
PartSize | long | 分片大小,默认5MB |
ContentType | string | 描述上传文件格式的标准MIME类型 |
CannedACL | S3CannedACL | 标准ACL信息(Private|PublicRead) |
代码示例:
class TransDemo
{
private readonly AmazonS3Client s3Client;
private readonly TransferUtility utility;
private string bucket = Config.Bucket;
public TransDemo()
{
var credentials = new BasicAWSCredentials(Config.AccessKey, Config.SecretKey);
var conf = new AmazonS3Config
{
ServiceURL = Config.EndPoint,
AuthenticationRegion = "cn",
Timeout = TimeSpan.FromSeconds(20),
MaxErrorRetry = 2,
};
this.s3Client = new AmazonS3Client(credentials, conf);
this.utility = new TransferUtility(this.s3Client);
}
public void UploadFile()
{
Console.Out.WriteLine("UploadFile");
var key = "ExampleObject.txt";
var filePath = "E:/ExampleObject.txt";
this.utility.Upload(filePath, bucket, key);
Console.Out.WriteLine("UploadFile success");
}
}
Content-Type用于标识文件的资源类型,比如image/png
, image/jpg
是图片类型,video/mpeg
, video/mp4
是视频类型,text/plain
, text/html
是文本类型, 浏览器针对不同的Content-Type会有不同的操作,比如图片类型可以预览,视频类型可以播放,文本类型可以直接打开。application/octet-stream
类型会直接打开下载窗口。
在dotnet sdk中,如果用户没有设置Content-Type,会根据对象的key后缀扩展名自动生成Content-Type。