我已经继承了使用Azure存储客户端1.7构建的项目,并且正在进行升级,因为微软宣布将从今年12月起不再支持该项目。
对Blob存储中文件的引用存储在具有以下字段的数据库中:
FilePath - uploadfiles/xxx/yyy/Image-20140117170146.jpg
FileURI - https://zzz.blob.core.windows.net/uploadfiles/xxx/yyy/Image-20140117170146.jpg
GetBlobReferenceFromServer
将抛出异常,因此如果您知道容器和Blob类型,则应该使用GetBlockBlobReference
。
所以我的问题:
GetBlockBlobReference
的容器名称,我可以可靠地说,在上面的示例中,我的容器始终是uploadfiles
答案 0 :(得分:1)
我可以假设当前上传的任何Blob(使用StorageClient 1.7) 会是BlockBlobs吗?
虽然您无法100%确定通过Storage Client库1.7上传的blob是Blob Blobs
,因为1.7也支持Page Blobs
,但您可以进行一些智能猜测。例如,如果文件是图像文件和其他常用文件(pdf,文档等),则可以假设它们是块blob。通常,您会看到vhd文件作为页面blob上传。如果这些是由您的应用程序的用户上传的,那么它们很可能是块blob。
话虽如此,我认为你应该使用GetBlobReferenceFromServer
方法。您可以做的是列出数据库中的所有blob,并为每个blob调用GetBlobReferenceFromServer
方法。如果blob存在,那么您将获得blob类型。如果blob不存在,此方法将给您一个错误。这将是识别数据库中现有条目的blob类型的最快方法。如果需要,如果在检查blob类型时发现块和页面blob,则可以将blob类型与现有记录一起存储在数据库中,以便将来需要在创建CloudBlockBlob
或CloudPageBlob
引用,您可以查看此字段。
因为我需要知道调用GetBlockBlobReference的容器名称 我可靠地说,在上面的例子中,我的容器总是如此 uploadfiles
是。在上面列出的示例中,您可以说blob容器为upload files
。