2009-06-22 27 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)。使用此功能似乎是实验性的,可能只是建议您可以控制通信的两端以消除互操作性问题。