2009-06-22 55 views
4

我想用一個txt文件和一個html頁面來響應一個http請求。這樣客戶端可以保存文件並通過html頁面查看該文件內容的摘要。多部分http響應的自定義ActionResult?

由於文件是即時生成的,我必須使用服務器上的狀態管理來生成第二個請求的摘要。我想避免這種情況,並以單一的迴應包裝起來。

自定義ActionResult會是什麼樣子?

回答

2

這是also discussed here on SO

我的答案是這樣的:

不,多附件進行 下載(如在電子郵件)是不支持 出於安全原因。這是 稱爲「驅動下載」。

請注意,Gmail通過 動態地壓縮文件來處理此問題。你也應該如此。 http://forums.asp.net/t/1240811.aspx

我不相信任何現代瀏覽器支持multipart/mixed。

-1

爲什麼不渲染總結作爲普通的HTML視圖,並提供彙總指向一個單獨的ActionResult返回二進制數據下面的鏈接...

public ActionResult SendFile(int id) 
    { 
     File file = FileRepository.GetFile(id); 
     byte[] fileData = file.FileData.ToArray(); 
     return File(fileData, file.FileMimeType, file.FileName); 
    } 
+0

我正在這樣做。此方法迫使我在服務器上執行一些狀態跟蹤,因爲第二個操作不會具有用於呈現第一個html表單的數據。我看到是否有辦法在不處理會話的情況下執行此操作(包括tempdata)。 – 2009-06-23 16:03:29

+0

數據即時生成 - 我也可以將它保存到一個分貝,但這只是另一種形式的狀態跟蹤。它應該扔掉。 – 2009-06-23 16:04:07

0

你可以參考發送XML XSLT樣式表。瀏覽器可以進行轉換並顯示一個結果HTML輸出。

而用戶可以簡單地做「文件 - >另存爲...」來存儲XML文件。

-1

我做了一些關於這個話題的搜索,令我驚訝的是,似乎人們已經這樣做了。我找到了描述here,但它沒有提供公共測試URI,所以我無法測試瀏覽器的行爲。它還提到了將檔案文件發送給客戶端的解決方案。但我認爲這不是你要找的東西,對吧?

Here是另一篇文章,展示了具有多部分響應的示例。可悲的是,演示URI似乎不再工作。

所以情況是這樣的:可以完成HTTP多部分響應。有客戶端(很少)庫來處理應用程序代碼中的那些庫。瀏覽器行爲將被測試(Here's a voice)。使用此功能似乎是實驗性的,可能只是建議您可以控制通信的兩端以消除互操作性問題。