繁体   English   中英

在 Get Object S3 请求中通过查询字符串指定字节范围

[英]Specify byte range via query string in Get Object S3 request

我熟悉范围 HTTP header; 但是,我用来查询 S3 的接口(一个 img 元素的 .src 属性)不允许我指定 HTTP 标头。

有没有办法通过查询字符串中的参数指定我想要的范围?

似乎没有,但在我使用 ajax 请求推出自己的解决方案之前,我只是抱着一丝希望。

Amazon S3支持Range GET请求,某些HTTP服务器也是如此,例如Apache和IIS。

CloudFront如何处理对象的部分请求(范围GET)

我试图通过cURL获取我的S3对象:

curl -r 0-1024 https://s3.amazonaws.com/mybucket/myobject -o part1
curl -r 1025-  https://s3.amazonaws.com/mybucket/myobject -o part2
cat part1 part2 > myobject

和AWS SDK for JavaScript:

var s3 = new AWS.S3();
var file = require('fs').createWriteStream('part1');
var params = {
    Bucket: 'mybucket',
    Key: 'myobject',
    Range: 'bytes=0-1024'
};
s3.getObject(params).createReadStream().pipe(file);

这两种方法对我来说很好。

AWS SDK for JavaScript API参考(getObject)

下面是 Java 代码与 AWS V2 SDK

格式化范围如下

var range = String.format("bytes=%d-%d", start, end);

并使用 GetObjectRequest 构建器将其传递到 api 以下

 ResponseBytes<GetObjectResponse> currentS3Obj = client.getObjectAsBytes(GetObjectRequest.builder().bucket(bucket).key(key).range(range).build());
return currentS3Obj.asInputStream();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM