[英]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。
我试图通过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);
这两种方法对我来说很好。
下面是 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.