【问题标题】:Uploading Base64 Image to Azure Blob将 Base64 图像上传到 Azure Blob
【发布时间】:2017-04-26 09:37:43
【问题描述】:

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

“/”应用程序中的服务器错误。找不到路径的一部分 'D:\Windows\system32\placeholder.png'。异常详情: System.IO.DirectoryNotFoundException:找不到一部分 路径“D:\Windows\system32\dist\img\fling\space.gif”。

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

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

【问题讨论】:

  • 如何将图像内容传递给您的服务器端代码?
  • @GauravMantri 抱歉,我该怎么做?
  • 我已经很久没有使用过这个了,但是应该有一些控件可以将文件上传到服务器。例如:geekswithblogs.net/dotNETvinz/archive/2011/01/20/….
  • 我不能使用它,因为它处理文件上传,我需要能够将“data:image/jpeg;base64,/9j/4AAQ...”之类的内容保存为图片文件。
  • 您的问题有点混乱,可能需要更多代码。你是说你是从浏览器上传文件到服务器文件系统,然后从服务器文件系统上传到 Azure 存储?

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


【解决方案1】:

根据您的描述,我们可以使用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);
  }

【讨论】:

  • 这解决了它 - 谢谢。我还不得不延迟该方法,因为它是在 JavaScript 更新元素之前触发的。
猜你喜欢
  • 1970-01-01
  • 2018-12-17
  • 2015-05-15
  • 2014-10-10
  • 1970-01-01
  • 2017-01-06
  • 2014-01-27
  • 2020-01-25
  • 2013-10-17
相关资源
最近更新 更多