azure - 将 Azure Blob block 上传限制从 32 MB 提高

标签 azure azure-blob-storage

我正在尝试将内容上传到 azure blob,并且大小超过 32MB。下面的 C# 代码片段:

CloudBlockBlob blob = _blobContainer.GetBlockBlobReference(blobName);
blob.UploadFromByteArray(contents, 0, contents.Length, AccessCondition.GenerateIfNotExistsCondition(), options:writeOptions);

每当 blob 超过 32MB 时,上面都会引发异常:

Exception thrown: 'Microsoft.WindowsAzure.Storage.StorageException' in Microsoft.WindowsAzure.Storage.dll

Additional information: The remote server returned an error: (404) Not Found.

根据 this

When a block blob upload is larger than the value in this property, storage clients break the file into blocks.

是否应该有单独的代码行来启用此功能。

最佳答案

Storage clients default to a 32 MB maximum single block upload. When a block blob upload is larger than the value in SingleBlobUploadThresholdInBytes property, storage clients break the file into blocks.

正如 Tamra 所说,存储客户端处理将文件分成 block 的工作。这是我的测试,以便您更好地理解它。

代码示例

CloudBlockBlob blob = container.GetBlockBlobReference(blobName);
var writeOptions = new BlobRequestOptions()
{
    SingleBlobUploadThresholdInBytes = 50 * 1024 * 1024, //maximum for 64MB,32MB by default          
};
blob.UploadFromByteArray(contents, 0, contents.Length, AccessCondition.GenerateIfNotExistsCondition(), options: writeOptions);

场景

  1. 如果您正在编写大小不超过 SingleBlobUploadThresholdInBytes 属性的 block blob,则可以通过单个写入操作将其完整上传。

    调用UploadFromByteArray方法时,可以通过Fiddler捕获网络包来理解。

  2. 当上传的 block blob 大小大于 SingleBlobUploadThresholdInBytes 属性中的值时,存储客户端会自动将文件分成 block 。

    我上传了一个大小接近90MB的blob,那么你可以发现差异如下:

    快照后,您可以发现存储客户端将文件分成 4MB 大小的 block ,并同时上传 block 。

Every time the blob is over 32MB, the above raises an exception

您可以尝试设置SingleBlobUploadThresholdInBytes属性或在调用UploadFromByteArray方法时捕获网络包来查找详细错误。

关于azure - 将 Azure Blob block 上传限制从 32 MB 提高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39237750/

相关文章:

azure - Azure 容器服务是否支持 Swarm 模式?

sql-server - Azure Release Pipeline DACPAC 部署期间登录失败

azure - Azure Blob 的原子更新

azure-blob-storage - 无法通过 SAS 使用 azcopy 从一个 blob 到另一个 blob

azure - 在 ADF 中参数化 Azure Blob 存储链接服务

node.js - azure 函数 - 在 azure 门户上运行 npm install

Azure逻辑应用程序从多部分HTTP请求获取文件内容

使用 powershell 进行 Azure DevOps git checkout

c# - 将文件批量上传到 Azure 的最快方法 (C#)

java - 我需要将XML文件转换为CSV,但必须只读取一次文件,并且记录标记中的标题可能会改变,有什么想法吗?