2016-05-04 79 views
0

azure blob存储似乎在执行字节范围请求时错误地设置了内容长度。以前的版本不支持开放式请求,所以我认为通过加入最新版本,我的问题将得到解决(2015-04-05)。Azure Blob存储内容长度

在这里,我已经对Azure blob中的文件执行GET请求并打印出标题。我期望内容长度仍然是剩余255个字节,而是我找到整个文件大小(15601108255)

(server-1)➜ server-1 git:(faster_calls) ✗ curl -I http://ga4ghstore.blob.core.windows.net/testing/HG00096.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam --header "x-ms-version: 2015-04-05" --range 15601108000- HTTP/1.1 200 OK Content-Length: 15601108255 Content-Type: application/octet-stream Content-MD5: M26lWRO8Jhtyh1vSWXUwRg== Last-Modified: Tue, 26 Apr 2016 18:30:11 GMT Accept-Ranges: bytes ETag: "0x8D36E00CD845EC7" Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0 x-ms-request-id: 2bf052dc-0001-013d-256d-a5a7a7000000 x-ms-version: 2015-04-05 x-ms-write-protection: false x-ms-lease-status: unlocked x-ms-lease-state: available x-ms-blob-type: BlockBlob Date: Tue, 03 May 2016 18:55:49 GMT

范围请求表现为正常处理,因为在中,返回的有效载荷是但是,预期的大小会将标头与Amazon为同一文件返回的内容进行比较。 “内容长度”标题是预期的“255”。

(server-1)➜ server-1 git:(faster_calls) ✗ curl -I --range 15601108000- http://s3.amazonaws.com/1000genomes/phase3/data/HG00096/alignment/HG00096.mapped.ILLUMINA.bwa.GBR.low_coverage.20120522.bam
HTTP/1.1 206 Partial Content x-amz-id-2: w6IO4ezWj2BBTkHA09D9gNRZgkmAQJ8khqc6O9t+Xr+xHmZKvwVTNd0vLCpaVcKoVl/2jZUskug= x-amz-request-id: CE8F86CD94173F51 Date: Tue, 03 May 2016 18:59:22 GMT x-amz-meta-s3cmd-attrs: uid:1000/gname:ubuntu/uname:ubuntu/gid:1000/mode:33204/mtime:1431500614/atime:1431500346/ctime:1431500614 Last-Modified: Wed, 13 May 2015 06:57:53 GMT ETag: "efd6d57b0f27974f6845f4e67a99c1a6-117" Accept-Ranges: bytes Content-Range: bytes 15601108000-15601108254/15601108255 Content-Type: application/gzip; charset=binary Content-Length: 255 Server: AmazonS3

回答

0

我只是想用cUrl通过同一命令我的机器上,如果我的理解是正确的,当你执行与-I选项curl命令你基本上做出HEAD请求而不是一个GET请求。本质上,您的命令使Get Blob Properties REST API调用不会返回数据。

因此,在Azure的情况下,响应是正确的,因为Content-Length响应标头应告诉您blob的大小。如果您想查看返回的大小,则需要使用-G(Get)参数进行cUrl请求。然后你会看到只有255个字节被返回。

+0

谢谢Gaurav!这有帮助!看起来亚马逊和微软不同地实施HEAD请求。我做了curl -vG并找到了具有正确内容长度的206。 – david4096

+0

尽管如此,我仍然认为这是一个错误:“响应HEAD请求而包含在HTTP头中的元信息应该与为响应GET请求而发送的信息相同。”(http://www.w3.org /Protocols/rfc2616/rfc2616-sec9.html) – david4096