如何查看Azure Blob Storage上传是否成功?
How to check whether Azure Blob Storage upload was successful?
我正在使用 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
方法)没有 return 类型,所以我不确定如何检索上传的结果。
如果我尝试使用 Azure Storage Explorer 连接到 SAS URL,列表
blob 容器失败并显示错误“身份验证错误。签名字段格式不正确”。我尝试 URL 转义 URL 的签名部分,因为在某些类似情况下这似乎是该错误的原因,但这并不能解决问题。
有什么方法可以检查 blob 上传的状态吗?有没有人知道为什么自动生成的 URL(由 Microsoft 的一位官方 API 提供)无法连接到使用 Azure Explorer?
请检查您的 SAS 的 sp 字段。它显示了您被授权对 blob 执行的权限。例如,sp=rw 表示您可以使用此 SAS 读取 blob 并将内容写入 blob。 sp=w 表示您只能使用此 SAS 将内容写入 blob。
如果你有阅读权限,可以将SASURL复制到浏览器地址栏。浏览器将为您下载或显示 blob 内容。
Is there any way to check the status of a blob upload?
如果您的代码没有抛出异常,则表示 blob 已成功上传。否则会抛出异常。
try
{
blockBlob.UploadFromFile(filePath);
}
catch(Exception ex)
{
//uploaded failed
}
您也可以使用任何网络调试代理工具(例如Fiddler)从存储服务器捕获响应消息来确认它。 Blob上传成功返回201 Created状态码
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 容器、队列或 table)。它不允许我们使用 SAS 连接 blob 项。
在同步上传的情况下,我们可以尝试基于异常的方法,也可以交叉检查"blockBlob.Properties.Length"。上传文件前为“-1”,上传完成后为上传文件大小。
所以我们可以添加检查来验证块长度,这将提供有关上传状态的详细信息。
try
{
blockBlob.UploadFromFile(filePath);
if(blockBlob.Properties.Length >= 0)
{
// File uploaded successfull
// You can take any action.
}
}
catch(Exception ex)
{
//uploaded failed
}
我正在使用 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
方法)没有 return 类型,所以我不确定如何检索上传的结果。
如果我尝试使用 Azure Storage Explorer 连接到 SAS URL,列表 blob 容器失败并显示错误“身份验证错误。签名字段格式不正确”。我尝试 URL 转义 URL 的签名部分,因为在某些类似情况下这似乎是该错误的原因,但这并不能解决问题。
有什么方法可以检查 blob 上传的状态吗?有没有人知道为什么自动生成的 URL(由 Microsoft 的一位官方 API 提供)无法连接到使用 Azure Explorer?
请检查您的 SAS 的 sp 字段。它显示了您被授权对 blob 执行的权限。例如,sp=rw 表示您可以使用此 SAS 读取 blob 并将内容写入 blob。 sp=w 表示您只能使用此 SAS 将内容写入 blob。
如果你有阅读权限,可以将SASURL复制到浏览器地址栏。浏览器将为您下载或显示 blob 内容。
Is there any way to check the status of a blob upload?
如果您的代码没有抛出异常,则表示 blob 已成功上传。否则会抛出异常。
try
{
blockBlob.UploadFromFile(filePath);
}
catch(Exception ex)
{
//uploaded failed
}
您也可以使用任何网络调试代理工具(例如Fiddler)从存储服务器捕获响应消息来确认它。 Blob上传成功返回201 Created状态码
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 容器、队列或 table)。它不允许我们使用 SAS 连接 blob 项。
在同步上传的情况下,我们可以尝试基于异常的方法,也可以交叉检查"blockBlob.Properties.Length"。上传文件前为“-1”,上传完成后为上传文件大小。
所以我们可以添加检查来验证块长度,这将提供有关上传状态的详细信息。
try
{
blockBlob.UploadFromFile(filePath);
if(blockBlob.Properties.Length >= 0)
{
// File uploaded successfull
// You can take any action.
}
}
catch(Exception ex)
{
//uploaded failed
}