通过POST下载带有Javascript的文件

Download a file with Javascript via POST

本文关键字:Javascript 文件 POST 下载 通过      更新时间:2024-03-06

我目前使用此解决方案通过javascript下载excel文件。当用户单击按钮时,我的javascript会创建一个url,并用iframe加载。此解决方案适用于短URL。然而,我遇到了一个情况,我的url对于get请求来说太长了。我想保留相同的行为,这样就不会为excel导出打开新的窗口。不过,如果有必要,我可以开一个临时窗口。我想到了一个我想避免的解决方案:

  1. 发出POST请求,创建excel文件,将其保存到临时文件夹,并返回唯一的文件名
  2. 在为iframe构建的url中请求文件名

我不喜欢这个解决方案,因为它需要大量的工作来设置一个临时文件夹,该文件夹将在我们所有的web服务器上共享。此外,如果我不需要的话,我只是不想创建一个临时文件

当前代码:

$("body").append('<iframe width="0" height="0" frameborder="0" src="' + dynamicallyCreatedUrl + '"></iframe>');

有没有一种方法可以让我通过javascript请求POST下载excel文件?

此解决方案必须适用于IE8+、Firefox、Chrome。仅供参考:我使用的是IIS7、ASP.Net MVC、C#。我可以访问YUIJQuery

我知道这对在POST中下载文件没有帮助,但它为您的问题提供了一个替代解决方案,而不会有太大改变。

我建议你使用网址缩写API。基本上,你可以给他们一个长的URL,让他们给你一个URL的缩短版本。

以下是我想到的前两个:

  • tinyurl(http://scripting.com/stories/2007/06/27/tinyurlHasAnApi.html)
  • bitly(http://dev.bitly.com/get_started.html)

tinyurl似乎不允许跨域javascript,所以你需要你的服务器向他们发出GET请求,并将URL返回给你的客户端。

bitly允许跨域javascript,但看起来可能需要添加一些身份验证