2015-02-24 50 views

回答

1

我不確定「ajax request」是什麼意思,爲什麼它很重要,但最近我們不得不解決類似的問題 - 即返回從其他工具生成的pdf。我們最終使用了作爲模板a binary processor,利用the content negotiation

您可以修改二進制處理器以使用application/pdf MIME類型和「pdf」文件擴展名,因此只要請求的Accept標頭爲「application/pdf」或請求類似於http://example.com/reports/report.pdf時,它就會返回正確的響應。

利用這一點,假設你有IReportEngineStream GetReportByName(string name),您的模塊會像(僞代碼):

Get["reports/{reportName}"] = _ => _engine.GetReportByName(_.reportName); 
+0

你任何機會有一些代碼片段來說明你的答案。我使用Crystal報表生成一個流,它沒有任何IReportEngine類型的接口。 – zszep 2015-02-24 16:38:23

+0

IReportEngine只是您自己的接口/服務的一個例子,它可以與數據一起生成流。你可以使用任何你想要的。答案的關鍵在於,給定一個能產生流的類,如果你實現某種形式的媒體範圍處理器,那麼你的模塊在返回這個流時非常簡單,而南希內容協商將會完成剩下的工作。 – 2015-02-24 22:00:13