2012-06-08 47 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

相關問題