使用Javascript向用户发送HTTP附件(打开浏览器的“另存为…”对话框)

使用Javascript向用户发送HTTP附件(打开浏览器的“另存为…”对话框),javascript,download,Javascript,Download,我是网络开发新手,所以如果这个问题是无意义的,我很抱歉。我想在用户请求时(即发送HTTP附件以触发浏览器的“另存为…”对话框)将服务器硬盘上的文件以Javascript的形式提供给用户。用户单击页面上的按钮,服务器根据其帐户设置(和其他参数)生成自定义数据文件,然后弹出“另存为…”对话框。我应该如何在Javascript中实现这一点 编辑:为了供您参考,服务器有Glassfish和Apache设置Http响应头: Content-Disposition: attachment; filename

我是网络开发新手,所以如果这个问题是无意义的,我很抱歉。我想在用户请求时(即发送HTTP附件以触发浏览器的“另存为…”对话框)将服务器硬盘上的文件以Javascript的形式提供给用户。用户单击页面上的按钮,服务器根据其帐户设置(和其他参数)生成自定义数据文件,然后弹出“另存为…”对话框。我应该如何在Javascript中实现这一点


编辑:为了供您参考,服务器有Glassfish和Apache设置Http响应头:

Content-Disposition: attachment; filename=myfile.txt
或者类似的事情

<a href="javascript:void(0);" onclick="document.execCommand('SaveAs',true,'file.html');">Save this page</a> 

“另存为”对话框仅在页面加载时显示。您需要将用户直接重定向到要保存的文件,或者重定向到提供该文件的服务器端页面

一旦知道文件的地址,请执行以下操作

window.location = http://yourserver.com/generatedfiles/file_2342342.txt
或者,执行以下操作:

window.location = http://yourserver.com/getgeneratedfile.aspx?fileID=2342342
…这会将用户重定向到提供生成文件的页面。然后,您需要在来自该页面的标题中指定内容配置和文件名,如Gandalf的回复中所述


编辑:啊,你在使用Apache。那时那里可能没有ASPX文件。

@aric的答案是正确的;但是,
window.location
将导致加载/卸载事件被触发,这可能不适合您的应用程序。在这种情况下,您可能会将隐藏的iframe指向url,以使“保存”对话框出现,而不会丢失页面的状态

另外,“SaveAs”可能是document.execCommand的IE特定值