c# - 将 Base64 图像上传到 Azure Blob

标签 c# asp.net azure azure-blob-storage

我有以下 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);
  }

关于c# - 将 Base64 图像上传到 Azure Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085305/

相关文章:

Azure 监视器警报多个订阅

c# - 单元测试我认为如何指出正在测试的类上的逻辑错误

asp.net - 预编译 ASP.Net MVC 2 应用程序的正确方法是什么?

azure - Function App 在本地运行良好,但部署到 Azure 时失败

c# - 在 .NET Core 解决方案中同时拥有 API 和 MVC 项目的约定

c# - ASP.NET 中的 session 超时警告

windows - 在 Azure VM(或 EC2)中的 Windows 变体上安装/执行产品测试?

c# - 文件中的变量(long、double...)存储方式是否错误?

c# - 如何知道 FrameworkElement 何时完全呈现?

c# - 延迟模板字符串插值