web-dev-qa-db-ja.com

URLを使用してblobを取得できますか?

Azure BLOBのURLをデータベースに保存していますが、そのURLを使用してBLOBを取得できますか?実際、blobを更新する必要があり、その間に検証が必要です。そのため、そのデータベースエンティティモデルをローカルモデルに変換して検証を適用する必要がありますが、ローカルモデルには、Id、Name、HttpPostedFileBaseファイルがあります。blobを挿入すると、blobのURLを取得して保存します。データベース内ですが、更新中にそのblobを取得するにはどうすればよいですか?これは私のローカルモデルです

public class BlobAppModel
    {
        public int Id { get; set; }
        [Required(ErrorMessage="Please enter the name of the image")]
        [Remote("IsNameAvailable","Home",HttpMethod="POST",ErrorMessage="Name Already Exists")]
        public string Name { set; get; }
         [Required(ErrorMessage="Please select an image file")]
        public HttpPostedFileBase File { set; get; }

    } 

私のエンティティモデルはこれです

public partial class BlobApp
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Uri { get; set; }
    }

私がそれを編集しているとき、私はブロブを取得する必要があります..私はここで立ち往生しています..誰かが私を助けることができますか?

public ActionResult Edit(string Id)
        {
            var data=BlobManager.GetBlob(Convert.ToInt32(Id));
            BlobStorageServices _blobstorageservice = new BlobStorageServices();
            CloudBlobContainer container = _blobstorageservice.GetCloudBlobContainer();
            CloudBlockBlob blob = container.GetBlockBlobReference(data.Uri.ToString());

            BlobAppModel model = new BlobAppModel { Id = data.Id, Name = data.Name, File =//This is where I need to get the file//};
            return View("Edit",BlobManager.GetBlob(Convert.ToInt32(Id)));
        }
12
Bharat Bhushan

BLOBにアクセスする最良の方法は、ここで説明されているように、コンテナー名とBLOB参照を使用してストレージにアクセスすることです。 https://www.windowsazure.com/en-us/develop/net/how-to -guides/blob-storage /#download-blobs コードで、アップロード時に設定した名前にblob参照を変更する必要があります。uriには変更しません。

CloudBlockBlob blob = container.GetBlockBlobReference(data.Uri.ToString());

代わりにこれを使用してください:

CloudBlockBlob blob = container.GetBlockBlobReference("yourfile.jpg");

Blob URLがあり、コンテナがパブリックアクセスに設定されている場合は、通常のhttpクライアントを使用してデータをダウンロードするだけでデータを取得できます。

7
Cristian T
   CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);

    CloudBlockBlob blob = new CloudBlockBlob(new Uri(imgUrl),storageAccount.Credentials);
19
Sentinel

Cristianも述べたように、blobの名前がわかっている場合は、GetBlockBlobReferenceを使用できます。それ以外の場合、完全なURLを使用する場合は、UriオブジェクトとStorageCredentialsオブジェクトを受け取る コンストラクター のいずれかを使用して、新しいCloudBlockBlobオブジェクトを作成できます。使用しているURIにSAS資格情報が含まれている場合、またはblobがパブリックである場合は、StorageCredentialsオブジェクトも必要ない場合があります。

10
Serdar Ozler

bLOBURIとコンテナを使用してBLOB参照を取得することができます。たとえば、blobを更新または削除する必要があり、資格情報が設定されたコンテナがすでにある場合:

var blob = container.ServiceClient.GetBlobReferenceFromServer(blobUri);
3
Kirill