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