2013-04-06 28 views
2

我正在使用MVC 3.我在服务器上的Action Method(称为GetCSV())中创建了一个csv文件。这是一个[HttpPost]操作方法。我想要做的是将该csv文件作为可下载文件直接发送到网络浏览器。我得到这个使用window.open(),然而,这是一个本质上的GET方法,我需要使用POST的东西,因为我需要传递很多参数。理想情况下,我想使用Ajax,因为我可以使用这种方法轻松地将大量参数传回服务器。关于如何使用Ajax调用将参数传递给服务器,然后以某种方式将响应打开为可下载文件的任何想法?我会很感激任何建议!如何将Ajax响应作为可下载文件发送到Web浏览器客户端?

+0

难道你不能返回一个路径? – aIKid 2013-04-06 23:24:33

+0

好吧,我实际上并没有将csv保存在服务器磁盘上。它全部在服务器内存中生成。最后,我想这样做,因为保存到磁盘将使其更具可扩展性,但现在它正在内存中完成。 – TheDude 2013-04-06 23:31:16

回答

1

我的解决方案是使用Microsoft的MVC 3 Ajax Form而不是JQuery的Ajax。几个月前,我偶然发现,如果您没有为MVC Ajax表单指定“成功”函数,它只是将文件发送到Web客户端进行下载。这是我需要发生的事情。我试过了,它的确按照预期工作。

0

无法使用JavaScript(至少以所有浏览器支持的标准方式)或ajax将文件保存到本地文件系统。这就是为什么推荐的方法是不使用ajax,通常是通过GET。

然而,您可以通过jquery的.param()将带有参数的json对象转换为URL,如this answer所示。

如果您确实想要探索javascript替代方案,也许您可​​以查看仅支持铬AFAIK的FileSystem API

+0

几个月前,我发现纯粹的意外,如果你没有指定一个“成功”函数来捕获Ajax响应,那么不显眼的Ajax(内置于mvc 3)直接发送json文件到页面供下载。我会在星期一试一试,让你们知道它是否有效。当然,除非有人在此之前尝试过。 ;) – TheDude 2013-04-07 03:19:27

相关问题