将 Base64 图像上传到 Azure Blob

Uploading Base64 Image to Azure Blob

我有以下 ASPX 标记:

<asp:Image ImageUrl="placeholder.png" runat="server" ID="plhdr" />

该网页让用户上传图像,该图像通过 JavaScript 库处理,然后设置为上述控件的源。 JavaScript 将源设置为 Base64 字符串,如下所示:

data:image/jpeg;base64,/9j/4AAQ...

我在同一页面上有一个功能,旨在将显示的图像上传到 Azure 存储,然后在 Azure SQL 中添加对它的引用。我在后面的代码中的代码是:

    StorageCredentials creden = new StorageCredentials(accountname, accesskey);
    CloudStorageAccount acc = new CloudStorageAccount(creden, useHttps: true);
    CloudBlobClient client = acc.CreateCloudBlobClient();
    CloudBlobContainer cont = client.GetContainerReference("testcont");
    cont.CreateIfNotExists();
    cont.SetPermissions(new BlobContainerPermissions
    {
        PublicAccess = BlobContainerPublicAccessType.Blob
    });
    CloudBlockBlob cblob = cont.GetBlockBlobReference("cblob");

    var imagesrc = plhdr.ImageUrl;

    cblob.UploadFromFile(@imagesrc);

    var imageUrl = cblob.Uri;

Server Error in '/' Application. Could not find a part of the path 'D:\Windows\system32\placeholder.png'. Exception Details: System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\Windows\system32\dist\img\fling\space.gif'.

在这一行:cblob.UploadFromFile(@imagesrc);.

希望有人能指出我正确的方向。

根据您的描述,我们可以使用UploadFromStream(stream)将图片文件上传到Azure存储,请尝试使用以下示例代码。它对我有用。

  CloudBlockBlob cblob = cont.GetBlockBlobReference("testblob");
  var bytes = Convert.FromBase64String(@"iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==");// without data:image/jpeg;base64 prefix, just base64 string
  using (var stream = new MemoryStream(bytes))
  {
     cblob.UploadFromStream(stream);
  }