在ImageControl上显示Azure blob加密图片

时间:2015-04-30 14:22:47

标签: c# azure encryption azure-storage-blobs

这是我关于Stackoverflow的第一个问题。

我面临的体系结构问题不仅仅是编程问题。

我将解释这个话题: 我正在使用Microsoft Azure云服务解决方案。

我有一个WorkerRole,用于加密上传的图片并将它们存储在Blob中。

然后我有一个WebRole,我希望在浏览器中,在图像控制器中显示这张图片。

我设法从blob到本地存储获取加密图片并对其进行解密。

此时,我看到了当我找到this时如何显示存储在WebRole LocalStorage中的图片。答案解释说,使用本地存储来提供图片是一个坏主意,因为每个请求都可以访问我的webRole的不同实例。

所以,在这里我被卡住了,如何在没有未加密的照片副本的情况下将我的解密照片提供给我的图像控制器?

解决方案 定义一个Web处理程序,将图片从blob下载到webrole,然后解密并返回。

public class Images : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
        {
            String imgPath;
            String imgName = context.Request.QueryString["imgName"];
            imgPath = getFromStorage(imgName);
            context.Response.ContentType = "image/png";
            context.Response.WriteFile(imgPath);
        }
}

在图片网页控件中:

<asp:Image ID="imgViewer" ImageUrl="Images.ashx?imgName=mypicture.png"/>

1 个答案:

答案 0 :(得分:0)

我不确定您为什么要对文件进行加密,但如果您必须这样做,那么这个答案可能有所帮助:Can an ASP.NET MVC controller return an Image?

我个人将私人文件存放在私人容器中。然后,您可以在指定的时间段内使用SAS向文档授予访问权限。

以下是具有相同概念的链接:http://blogs.msdn.com/b/eugeniop/archive/2010/04/13/windows-azure-guidance-using-shared-key-signatures-for-images-in-a-expense.aspx

我在实际文档的生产环境中有一个这样的形式。

希望这有帮助! 〜干杯