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)));
}
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クライアントを使用してデータをダウンロードするだけでデータを取得できます。
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
CloudBlockBlob blob = new CloudBlockBlob(new Uri(imgUrl),storageAccount.Credentials);
Cristianも述べたように、blobの名前がわかっている場合は、GetBlockBlobReferenceを使用できます。それ以外の場合、完全なURLを使用する場合は、UriオブジェクトとStorageCredentialsオブジェクトを受け取る コンストラクター のいずれかを使用して、新しいCloudBlockBlobオブジェクトを作成できます。使用しているURIにSAS資格情報が含まれている場合、またはblobがパブリックである場合は、StorageCredentialsオブジェクトも必要ない場合があります。
bLOBURIとコンテナを使用してBLOB参照を取得することができます。たとえば、blobを更新または削除する必要があり、資格情報が設定されたコンテナがすでにある場合:
var blob = container.ServiceClient.GetBlobReferenceFromServer(blobUri);