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 容器设置处于专用状态时的应用程序

Azure blob as Image Windows Forms

首先,请确保 SAS 签名定义了"读取"权限("列表"权限仅允许列出 Blob 容器中的 Blob)。然后替换以下代码行:

pictureBox1.ImageLocation = blobItem.Uri.ToString();

跟:

pictureBox1.ImageLocation = blobItem.Uri.ToString() + signature;
无法

查看图片的原因是,为 Blob 获取的 URI 未附加 SAS 组件。