日期:2009-12-28  浏览次数:20860 次

网站不仅仅只包含网页,有时你需要提供用户能下载的文件。将你的文件放到服务器上并在网页中附上链接只是第一步,你还需意识到HTTP响应的头文件影响文件下载。

提示一:强制下载并控制文件名

在HTML中提供一个下载链接很简单:

<a href="http://download.httpwatch.com/httpwatch.exe">Download<a>

对于浏览器不知道如何呈现的二进制文件,如安装程序和ZIP文件,这工作的很好。这会出现一个对话框,允许用户将文件存储到本地。

IE File Save Dialog

问题在于,如果文件能呈现自己,不同的浏览器行为就不一样。例如,如果你链接一个纯文本文件,浏览器会打开它,不会提示保存下载。

Plain Text in IE

你可以加入以下响应头文件强制使用文件下载对话框。

Content-Disposition: attachment; filename=<file name.ext>

头部还可以控制默认的文件名,这可以帮助你方便的生成像getfile.aspx一样的内容,但你要提供一个更有意义的文件名给用户。

对于静态内容,您可以在您的Web服务器手动配置额外的头文件。例如,下面是在IIS中设置:

content_disposition_header

为动态生成的内容,您需要在网页的服务器端代码中添加此头部。

加入了头部之后,浏览器总是提示用户下载该文件: