我想流式传输具有特定起始位置的文件。我可以使用普通 HTTP 客户端在公共 S3 存储桶中给定文件 URL 来执行此操作。
现在,我想使用 AWS SDK 来执行此操作。我使用 C# v3 的 AWS 开发工具包。我的代码如下:
public Stream Stream Connect(long position){
var s3Client = new AmazonS3Client();
var request = new GetObjectRequest
{
BucketName = _bucketName,
Key = _path,
ByteRange = new ByteRange($"{position}-")
};
GetObjectResponse response = await s3Client.GetObjectAsync(request);
return response.ResponseStream
}
显然,无论我传入参数的位置如何,我总是从位置 0 开始获取字节。
有人可以帮我吗?
我不确定,但根据here提到的源代码,您可能会尝试更改代码。似乎没有对
ByteRange
类提供的字符串进行验证。您可以尝试以下方法:
public Stream Stream Connect(long position){
var s3Client = new AmazonS3Client();
var request = new GetObjectRequest
{
BucketName = _bucketName,
Key = _path,
ByteRange = new ByteRange($"bytes={position}-")
};
GetObjectResponse response = await s3Client.GetObjectAsync(request);
return response.ResponseStream
}
您可以在这里查看有关范围标头的文档。