[英]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.