Asp.net C#自定义文件处理程序

时间:2016-01-04 18:05:40

标签: c# asp.net wcf iis

我想从asp.net网站接收文件,但我想在将文件提供给客户端之前用数据库中的数据验证请求。

对于图像,我将使用标准的html图像标记加载:

'<img src="/Uploads/RANDOMGUID/img.aspx" alt="The Moon" title="The Moon">

请求将在路径中具有随机GUID,该GUID映射到数据库中用于存储图像的字段。

我想为所有请求设置一个入口点,例如aspx或ashx页面[除非有更好的方法],这样就可以了:

  • 将GUID解析出请求路径
  • 验证请求者是否可以使用数据库数据访问所请求的图像或文件
  • 如果未经授权,则返回错误图像或文件
  • 如果授权,则返回文件内容并设置内容类型

我应该如何实现这些功能?我是否需要在aspx文件中处理的站点范围文件扩展名并返回自定义文件内容类型?

1 个答案:

答案 0 :(得分:1)

首先,将图像文件放入用户无法直接访问的目录中。 然后像这样改变路径: <img src="/Uploads/img.aspx?id=RANDOMGUID" alt="The Moon" title="The Moon"> 这样,您可以从Request.QueryString [&#34; id&#34;]获取ID并进行检查。 它比你想要的路径容易得多,因为它总是会转到相同的aspx页面。使用原始路径,您将不得不进行路径映射并使您的生活复杂化。

签入数据库后,您可以使用Response.WriteFile发送相应的文件。查看https://msdn.microsoft.com/en-us/library/dyfzssz9%28v=vs.110%29.aspx了解详情。

编辑:这是关于获取图像的ID。正如@mason指出的那样,你应该注册处理程序并使用.ashx扩展名,因为你真的不需要查看。