通过POST下载带有Javascript的文件
Download a file with Javascript via POST
我目前使用此解决方案通过javascript下载excel文件。当用户单击按钮时,我的javascript会创建一个url,并用iframe加载。此解决方案适用于短URL。然而,我遇到了一个情况,我的url对于get
请求来说太长了。我想保留相同的行为,这样就不会为excel导出打开新的窗口。不过,如果有必要,我可以开一个临时窗口。我想到了一个我想避免的解决方案:
- 发出
POST
请求,创建excel文件,将其保存到临时文件夹,并返回唯一的文件名 - 在为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#。我可以访问YUI
和JQuery
。
我知道这对在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,但看起来可能需要添加一些身份验证
- 使用压缩的JavaScript文件(不是运行时压缩)
- 如何包含特定于每个视图angularjs的javascript文件
- 将数据从javascript文件导入VB.Net页面
- Chrome加载旧版本的Javascript文件
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在visualstudio中调试web api时编辑javascript文件
- 关于引入外部javascript文件的问题&css通过https
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 在一个javascript文件中为整个网站创建标签
- 如何在定义js文件后为外部javascript文件设置变量
- 显示IIS上javascript文件(SOAP请求)的XML响应
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- Django'支持Javascript文件中的翻译
- MVC正在忽略我的Javascript文件
- 为什么不't我的ruby代码与javascript文件一起插入
- 在Javascript文件中获取PHP变量
- 如何在Windows中将Javascript文件编译成二进制文件