2017-02-16 5 views
2

私は「この形式のデータベース内のファイルのURIを保存メートル:私はこのBLOB名ではなく、完全なUriによってAzure BLOBの参照を取得しますか?

CloudBlockBlob blockBlob = Container.GetBlockBlobReference(uri); 

をしようとすると、

https://app.blob.core.windows.net/container/Accounts/Images/acc.jpg 

しかし、私は唯一のブロブ名を渡す必要があり、それを削除するには、 ブロブのフルuriは次のようになります。

https://app.blob.core.windows.net/container/https://app.blob.core.windows.net/container/Accounts/Images/acc.jpg

だから私はを取得します10エラー(見つからない)、 uriにトリミングを行うことはできますが、それは効率的ではありません。 完全なURIでBLOB /参照を削除する方法はありますか?

答えて

2

このconstructorCloudBlockBlobを作成し、これを行うことが可能である:

あなたのケースでは
public CloudBlockBlob(Uri blobAbsoluteUri) 

、URIがタイプウリだけでなく、文字列であると仮定すると:

CloudBlockBlob blob = new CloudBlockBlob(uri); 

あなたが必要な場合がありますblobが公開されていないか、uriにSAS資格情報が含まれていない場合(あなたが含むもの)その場合は、あなたが必要となります。このconstructor:コメントのZhaoxing Lu - Microsoftで述べたように

public CloudBlockBlob(Uri blobAbsoluteUri, StorageCredentials credentials) 

公開アクセスは読み取り専用アクセスをされ 、あなたはストレージ アカウントキーまたは共有アクセス署名を指定する必要があります操作を削除します。私は同様の問題に直面しました

+0

を 'Uri'は正しくなりましたが、それでも同じ404エラーを取得? –

+0

ブロブ/コンテナは公開されていますか? – moondaisy

+0

はい、公開しています。私はUriをトリムして、 'GetBlockBlobReference'メソッドを使いました。どういうわけか、それは動作します。 –

1

、私はすでに有効なコンテナ参照を持っていたので、これは私の仕事:

CloudBlockBlob blockblob = container.GetBlockBlobReference(new CloudBlockBlob(blobUri).Name); 
関連する問題