我是网络开发新手,所以如果这个问题没有问题,我很抱歉。我希望在服务器的硬盘上向用户提供一个文件(如发送HTTP附件以触发浏览器的“另存为...”对话框)。用户点击页面上的按钮,服务器根据他/她的某些帐户设置(和其他参数)生成定制的数据文件,然后弹出“另存为...”对话框。我应该如何去实现这个在Javascript中?使用Javascript向用户发送HTTP附件(打开浏览器的另存为...对话框)
编辑:供大家参考,服务器Glassfish和Apache的
我是网络开发新手,所以如果这个问题没有问题,我很抱歉。我希望在服务器的硬盘上向用户提供一个文件(如发送HTTP附件以触发浏览器的“另存为...”对话框)。用户点击页面上的按钮,服务器根据他/她的某些帐户设置(和其他参数)生成定制的数据文件,然后弹出“另存为...”对话框。我应该如何去实现这个在Javascript中?使用Javascript向用户发送HTTP附件(打开浏览器的另存为...对话框)
编辑:供大家参考,服务器Glassfish和Apache的
简,
另存为对话框o很少出现在页面加载。您需要将您的用户直接重定向到您希望他们保存的文件,或重定向到提供文件的服务器端页面。
一旦你知道文件的地址,这样做
window.location = http://yourserver.com/generatedfiles/file_2342342.txt
或者,做这样的事情:
window.location = http://yourserver.com/getgeneratedfile.aspx?fileID=2342342
...这将用户重定向到该因子的页面生成的文件。然后您需要在该页面的标题中指定内容处置和文件名,如甘道夫的回复中所述。
编辑:啊,你使用的是Apache。那么可能不会有那里的ASPX文件。
设置HTTP响应头:
Content-Disposition: attachment; filename=myfile.txt
或者像这样
<a href="javascript:void(0);" onclick="document.execCommand('SaveAs',true,'file.html');">Save this page</a>
@ aric的回答是正确的;但是,window.location
将导致加载/卸载事件被触发,这可能不适合您的应用程序。在这种情况下,您可能会将隐藏的iframe指向该url,以使保存对话框显示而不会丢失页面的状态。
另外,'SaveAs'可能是document.execCommand的IE特定值,因为它doesn't exist in Firefox。