通过POST下载带有Javascript的文件

时间:2013-12-04 21:22:30

标签: javascript browser download

我目前使用this solution通过javascript下载excel文件。当用户点击按钮时,我的javascript会创建一个我用iframe加载的网址。此解决方案适用于短网址。但是,我遇到过一个案例,我的网址对于get请求来说太长了。我想保留相同的行为,以便不为excel导出打开新的窗口。但是,如果有必要,我可以打开一个临时窗口。我想到了一个我想避免的解决方案:

  1. 创建一个创建excel文件的POST请求,将其保存到临时文件夹,然后返回唯一的文件名。
  2. 在为iframe构建的网址中请求文件名。
  3. 我不喜欢这个解决方案,因为它需要一些非常重要的工作来设置一个临时文件夹,该文件夹将在我们所有的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

1 个答案:

答案 0 :(得分:1)

我知道这对于在POST中下载文件没有帮助,但它为您的问题提供了另一种解决方案,而且没有太大变化。

我建议您使用网址缩短API。基本上,您只需传递一个长URL,并让它们为您提供缩短版本的URL。

以下是我想到的前两个:

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

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