簡體   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