一个.ashx所有文件类型的通用处理程序?

时间:2012-06-08 05:49:06

标签: c# asp.net httphandler file-type

我已经阅读了基本的MSDN信息和一些教程。从我到目前为止所学到的,我已经能够创建两个.ashx处理程序,我称之为ImageHandler.ashx和PDFHandler.ashx。他们按照您的期望行事:分别返回图片或PDF。对于这两个处理程序,在ProcessRequest方法中,我分别将context.Response.ContentType设置为“image / jpeg”和“application / pdf”,然后用context.Response.BinaryWrite(bytes)写结果这很好用。

但是,我希望允许用户能够下载任何文件,无论其类型如何。我真的需要为每种文件类型创建不同的处理程序吗?

我可以只有一个.ashx文件,然后根据文件类型(我会通过文件名的子字符串得到)获得一个switch语句吗?即使我这样做,那些非标准的文件类型,例如.xyz文件呢?在这种情况下,我应该将content.Response.ContentType设置为什么?

2 个答案:

答案 0 :(得分:3)

不,如果基本操作相同,则不需要多个处理程序,尤其是。是的,您可以使用任何类型的逻辑来决定将响应内容类型设置为什么。对于您不知道的事情,请使用application/octet-stream。您还应该考虑设置“content-disposition”标题,这样您就有机会建议它是“内联”(即在浏览器中),还是作为下载提示 - 以及逻辑文件名是什么(而不是一些ashx页面。)

答案 1 :(得分:2)

您可以设置Content-type: application/octet-stream并让浏览器根据文件扩展名处理要执行的操作。