我已经阅读了基本的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
设置为什么?
答案 0 :(得分:3)
不,如果基本操作相同,则不需要多个处理程序,尤其是。是的,您可以使用任何类型的逻辑来决定将响应内容类型设置为什么。对于您不知道的事情,请使用application/octet-stream
。您还应该考虑设置“content-disposition”标题,这样您就有机会建议它是“内联”(即在浏览器中),还是作为下载提示 - 以及逻辑文件名是什么(而不是一些ashx页面。)
答案 1 :(得分:2)
您可以设置Content-type: application/octet-stream
并让浏览器根据文件扩展名处理要执行的操作。