前端之家收集整理的这篇文章主要介绍了
ajax – 如何在不离开页面的情况下提供文件?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目标
我试图让用户在页面上点击一个按钮来下载一个文件(在这种情况下是myfile.zip),而不用离开页面 – 即浏览器必须保留在当前页面上,并将它们放在一个位置可以继续使用该页面,包括再次点击该按钮(如果他们希望得到该文件的新副本).
我需要这样做可以在所有浏览器(IE6-8,Firefox,Chrome,Opera,Safari)上运行.
背景
在zip中打包是一个基于其他交互(其中一些可能部分完成)的东西,从同一个页面(这一切都通过ajax完成),我不希望他们离开页面,因为它们会丢失任何未保存的更改.
提供下载
文件时
添加以下
标题:
Content-disposition: attachment; filename=filename.zip
大多数浏览器将等待看到他们在清除当前页面之前加载的是什么类型的东西,如果这些东西应该作为文件下载,那么它们将不会从当前页面导航(他们将显示另存为对话框在页面前面,可以将其关闭返回页面).
然而,如果您发现某个浏览器导航离开当前页面,则可能尝试将链接指向包含在小iframe中的下载,因此只有该框架更改.
我认为在新窗口中打开链接是一个更好的解决方案,因为一旦浏览器确定它是一个应该被下载的文件,一些浏览器就会离开新的窗口,所以最终会出现一个空白窗口.