一个适用于所有文件类型的 .ashx 泛型处理程序

本文关键字:类型 ashx 泛型 程序 处理 文件 一个 适用于 | 更新日期: 2023-09-27 18:36:36

我已经浏览了基本的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设置为什么?

一个适用于所有文件类型的 .ashx 泛型处理程序

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

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