2011-06-28 55 views
0

我有我的服务器的html界面。在界面上是一个按钮。当用户点击按钮时,他们下载位于服务器上的文件。Javascript下载按钮的最佳实践实现是什么?

我用当前的实现在用户按下按钮后,将一个iframe添加到html文档中。 iframe将url参数设置为服务器上文件的URI,并显示参数“none”。它附在文档的正文上。

我的问题是,达到这样的结果的最佳做法是什么?即按钮处理程序应如何管理下载?

+0

我认为iframe不太可能与问题有关。除了你的字符编码问题,我没有看到你正在做的事情有什么问题。这里“安全”是什么意思? – Pointy

+0

这个问题更多的是关于实现这种下载按钮的最佳做法,而不是我遇到的问题。我已经编辑了这个问题。 –

+0

为什么要采用这种复杂的方式?你可以用一些PHP来做到这一点,并设置标题来强制浏览器下载文件。 Chrome Html 5视频中的 – petsoukos

回答

2

我会说,最佳实践是使用您的按钮的形式。例如:

<form method="get" action="/file-to-download.zip"> 
    <div> 
    <input type="submit" value="Download" /> 
    </div> 
</form> 

如果你真的需要它在IFRAME为目标(如aroth解释,这似乎不必要的 - 你总是可以设置为认可的类型,内容处置响应头),你可以把target="myIFrame"在你的表单标签(myIFrame是你隐藏的IFRAME的名字)。

事实上,Content-Disposition response header最佳实践确保文件被下载,而不是打开。

3

为什么不这样做:

window.location.href = <download URL>;

这应该可以在任何浏览器中使用,除非您的可下载内容使用的是mime类型,否则它甚至不应该将用户从您的网页(从浏览器中显示的内容的角度)浏览器会尝试渲染自己(例如,如image/png)。

+0

我遇到了此方法的网络错误,有关如何解决此问题的任何想法? – DevDave