AWS SDK S3 客户端未返回正确的字节范围

问题描述 投票:0回答:1

我想流式传输具有特定起始位置的文件。我可以使用普通 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 开始获取字节。

有人可以帮我吗?

c# amazon-s3 aws-sdk-net
1个回答
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
    }

您可以在这里查看有关范围标头的文档。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.