gpt4 book ai didi

azure-storage - 如何检查 Azure Blob 存储上传是否成功?

转载 作者:行者123 更新时间:2023-12-04 03:12:04 25 4
gpt4 key购买 nike

我正在使用 Azure SAS URL 将文件上传到 Blob 存储:

var blockBlob = new Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob(new System.Uri(sasUrl));
blockBlob.UploadFromFile(filePath);

该文件存在于我的磁盘上,并且 URL 应该是正确的,因为它是从 Windows Store Ingestion API 自动检索的(并且,如果我稍微更改 URL 签名部分中的一个字符,上传将失败并显示 HTTP 403)。

然而,当检查
var blobs = blockBlob.Container.ListBlobs();

结果是 Count = 0 ,所以我想知道上传是否成功?不幸的是, UploadFromFile方法(类似于 UploadFromStream 方法)没有返回类型,所以我不确定如何检索上传的结果)。

如果我尝试使用 Azure Storage Explorer 连接到 SAS URL , list
blob 容器失败并显示错误“身份验证错误。签名字段格式不正确”。我尝试对 URL 的签名部分进行 URL 转义,因为在某些类似情况下这似乎是导致该错误的原因,但这并不能解决问题。

有没有办法检查 blob 上传的状态?有没有人知道为什么不能使用 Azure Explorer 连接到自动生成的 URL(由 Microsoft 的官方 API 之一提供)?

最佳答案

请检查您的 SAS 的 sp 字段。它显示了您有权对 blob 执行的权限。例如,sp=rw 表示您可以使用此 SAS 读取 blob 并将内容写入 blob。 sp=w 意味着您只能使用此 SAS 将内容写入 blob。

如果您有阅读权限,您可以将 SAS URL 复制到浏览器地址栏。浏览器将为您下载或显示 blob 内容。

Is there any way to check the status of a blob upload?



如果您的代码没有抛出异常,则表示 blob 已成功上传。否则会抛出异常。
try
{
blockBlob.UploadFromFile(filePath);
}
catch(Exception ex)
{
//uploaded failed
}

您也可以使用任何 Web 调试代理工具(例如 Fiddler)来确认它从存储服务器捕获响应消息。 201 如果blob上传成功,将返回Created状态码。

enter image description here

Has anybody an idea why an auto-generated URL (delivered by one of Microsoft's official APIs) can not be connected to using Azure Explorer?



Azure 存储资源管理器只允许我们使用 SAS 连接存储帐户或使用 SAS 附加存储服务(blob 容器、队列或表)。它不允许我们使用 SAS 连接 blob 项。

关于azure-storage - 如何检查 Azure Blob 存储上传是否成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44395881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com