【问题标题】:Download a file with Javascript via POST通过 POST 下载带有 Javascript 的文件
【发布时间】:2013-12-04 21:22:29
【问题描述】:

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

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

我不喜欢这个解决方案,因为它需要大量的工作来设置一个临时文件夹,该文件夹将在我们所有的网络服务器之间共享。另外,如果不需要,我宁愿不创建临时文件。

当前代码:

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

有没有办法可以发出POST 请求以通过 javascript 下载 excel 文件?

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

【问题讨论】:

    标签: javascript browser download


    【解决方案1】:

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

    我建议您使用 URL 缩短 API。基本上,您可以只向他们传递一个长 URL,然后让他们为您提供 URL 的缩短版本。

    这是我想到的前两个:

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

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

    【讨论】:

    • 很遗憾,由于安全限制,我无法使用第三方 URL 缩短器。我非常感谢这个建议,因为它对我的其他一些项目很有用!
    猜你喜欢
    • 2011-03-30
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多