x-ms-requires-sync 标头上的 Azure 存储从 Url 复制 Blob (REST API) 错误

问题描述 投票:0回答:1

我想使用带有 x-ms-copy-source 标头的 PUT REST API 将大文件(可通过 Internet 公开访问)上传到 Azure blob。 PUT uri 包含 SAS 令牌,我使用这些标头:

x-ms-version: 2023-11-03
x-ms-blob-type: BlockBlob
x-ms-copy-source: https://mypublicfile/filename.csv

效果很好。但是 documentation 指出还应该添加 x-ms-requires-sync:true 标头并且是必需的。但是当我添加这个时,我收到这个错误:

<?xml version="1.0" encoding="utf-8"?>
<Error>
    <Code>InvalidHeaderValue</Code>
    <Message>The value for one of the HTTP headers is not in the correct format.
RequestId:935f1ff5-a01e-0065-6f34-80e89b000000
Time:2024-03-27T10:51:11.7886167Z</Message>
    <HeaderName>x-ms-requires-sync</HeaderName>
    <HeaderValue>true</HeaderValue>
</Error>

知道我做错了什么吗?

除此之外,是否有任何大小限制(除了此处所述的明显最大斑点大小之外)。 高达 5GiB 似乎工作正常,但大文件会出错。

azure azure-blob-storage
1个回答
0
投票
<Message>The value for one of the HTTP headers is not in the correct format.</Message>
<HeaderName>x-ms-requires-sync</HeaderName>
<HeaderValue>true</HeaderValue> </Error> 

上述错误表明从 URL 复制 blob 不需要

x-ms-requires-sync
标头。该标头用于指定复制操作是否应该同步。

复制 blob 操作默认是异步的。因此,您可以从请求中删除

x-ms-requires-sync
标头。

因此,我也尝试在我的请求中不使用

x-ms-requires-sync
,并且执行成功。

邮递员:

enter image description here

传送门:

enter image description here

关于你的第二个问题,大小限制,在单个请求中可以上传的块 blob 的最大大小是

256 MB.
如果您需要上传更大的 blob,您可以将其分成更小的块或块并并行上传。

您可以使用 Put block from url 请求上传大文件,这些文件会将 blob 分解为块,然后使用该请求上传块。然后,您需要在上传所有块后使用 Put Block List 提交这些块。

参考:

如何使用带有 SaS Url 的 PUT 直接从浏览器将大文件 (~10GB) 上传到 Azure Blob 存储? - Stack Overflow,作者:Gaurav Mantri。

© www.soinside.com 2019 - 2024. All rights reserved.