2012-06-08 17 views
3

我已经通过基本的MSDN信息和一些教程。从我迄今为止学到的知识中,我已经能够创建两个.ashx处理程序,我称之为ImageHandler.ashx和PDFHandler.ashx。他们做你所期望的:分别返回图像或PDF。对于这两个处理程序,在ProcessRequest方法中,我将context.Response.ContentType分别设置为“image/jpeg”和“application/pdf”,然后将结果写入context.Response.BinaryWrite(bytes)到目前为止,这工作得很好。一个用于所有文件类型的.ashx通用处理程序?

但是,我想允许用户有能力下载任何文件,无论类型。我真的需要为每种文件类型创建一个不同的处理程序吗?

我可以只有一个.ashx文件,然后根据文件类型(我将通过文件名的子字符串获取)有一个switch语句吗?即使我这样做,那么不是标准的文件类型,比如说.xyz文件呢?在那种情况下,我该如何设置content.Response.ContentType

回答

3

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

+0

这正是我所需要的。现在完美工作。 – CptSupermrkt

2

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

+0

两个很好的答案,对不起,我只能选择一个。 – CptSupermrkt

相关问题