我正在使用MVC 3.我在服务器上的Action方法中创建了一个csv文件(名为GetCSV())。这是一个[HttpPost]动作方法。我想做的是将csv文件作为可下载文件直接发送到Web浏览器。我使用window.open()来使用它,但是,这本质上是一个GET方法,我需要一些使用POST的东西,因为我需要将大量参数传递给它。理想情况下,我想使用Ajax,因为我可以使用这种方法轻松地将大量参数传回服务器。有关如何使用Ajax调用将参数传递给服务器然后以某种方式将响应打开为可下载文件的任何想法?我很感激任何建议!
答案 0 :(得分:1)
我的解决方案是使用Microsoft的MVC 3 Ajax Form而不是JQuery的Ajax。几个月前我发现,如果你没有为MVC Ajax表单指定“成功”函数,它只是将文件发送到Web客户端进行下载。这就是我需要发生的事情。我尝试了这个,它确实按预期工作。
答案 1 :(得分:0)
您无法使用javascript(至少以所有浏览器支持的标准方式)或ajax将文件保存到本地文件系统。这就是为什么推荐的方法是在没有ajax的情况下进行,通常是通过GET。
然而,您可以通过.param()上显示的jquery的this answer将带参数的json对象转换为URL。
如果您确实想要探索javascript替代方案,也许您可以查看仅由chrome AFAIK支持的FileSystem API。