我以base 64编码的字符串形式接收图像数据,我需要显示图像的内容而不将其下载到服务器。
在浏览器中访问URL时,我的图像无法正确显示
select t.id, tt.dept [from], t.dept [to], t.doj
from tablename t inner join tablename tt
on tt.id = t.id and
tt.doj = (select max(doj) from tablename where id = t.id and doj < t.doj)
它像这样显示
答案 0 :(得分:0)
FileMode.Create指定操作系统应创建一个新文件。如果文件已经存在,它将被覆盖。有关更多详细信息,请参阅此article。
如果您的Blob大小为0B。那么,您将始终找不到文件并打开它。 FileMode指定操作系统应如何打开文件。可以将其删除并使用OpenRead打开现有文件进行读取。您可以参考以下代码:
using (var f = System.IO.File.OpenRead(model.FileToUpload.FileName))
{
await blockBlob.UploadFromStreamAsync(f);
}
有关其他信息,您可以参考此SO线程中提到的建议, Cannot view image upload to azure blob storage
如果您在此问题上需要进一步的帮助,请告诉我。
答案 1 :(得分:0)
我找到了解决方法
我将传入的字符串(基于64位图像的数据)转换为字节数组,并存储在内存流中,并上传到blob。
try
{
CloudBlobClient blobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(BlobStorageContainer);
if (await container.CreateIfNotExistsAsync())
{
await container.SetPermissionsAsync(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
}
string blobID= Guid.NewGuid().ToString();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobID);
blockBlob.Properties.ContentType = "image/jpeg";
byte[] imageBytes = Convert.FromBase64String(imageData);
MemoryStream memStream = new MemoryStream(imageBytes);
await blockBlob.UploadFromStreamAsync(memStream);
return blockBlob.Uri.AbsoluteUri;
}