Azure blob as Image Windows Forms
本文关键字:Windows Forms Image as blob Azure | 更新日期: 2023-09-27 17:56:32
在我的应用程序中,我可以将一些图像上传到Windows Azure上的blob存储中。现在,我正在开发应用程序的第二部分,从 Azure 服务器检索图像,并在图片框中显示它们。
我尝试了几件事:
listboxPictures.Items.Clear();
iTotalPictures = 0;
CloudBlobClient blobClient =
new CloudBlobClient("http://ferryjongmans.blob.core.windows.net/",
new StorageCredentialsSharedAccessSignature(signature));
CloudBlobContainer container = blobClient.GetContainerReference(comboBox1.SelectedItem.ToString());
CloudBlobDirectory direct = container.GetDirectoryReference(comboBox1.SelectedItem.ToString());
BlobRequestOptions options = new BlobRequestOptions();
options.UseFlatBlobListing = true;
options.BlobListingDetails = BlobListingDetails.Snapshots;
foreach (var blobItem in direct.ListBlobs(options))
{
listboxPictures.Items.Add(blobItem.Uri.ToString());
iTotalPictures ++;
lblTotal.Text = "Total frames: "+Convert.ToString(iTotalPictures);
pictureBox1.ImageLocation = blobItem.Uri.ToString(); // This is the display box, this works only with public settings on the container
}
这有效,但仅当容器是公共的(在 Azure 控制面板中设置)时。但是我想在将容器设为私有时获取图像。
请问谁能帮我?
(希望描述足够清楚)
我的 blob 容器设置处于公共状态时的应用程序我的 blob 容器设置处于专用状态时的应用程序
首先,请确保 SAS 签名定义了"读取"权限("列表"权限仅允许列出 Blob 容器中的 Blob)。然后替换以下代码行:
pictureBox1.ImageLocation = blobItem.Uri.ToString();
跟:
pictureBox1.ImageLocation = blobItem.Uri.ToString() + signature;
无法查看图片的原因是,为 Blob 获取的 URI 未附加 SAS 组件。