繁体   English   中英

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

[英]Using Javascript to send an HTTP attachment to the user (open browser's Save as… dialog)

我是Web开发的新手,所以如果这个问题不好,我深表歉意。 我想在用户请求时(即发送HTTP附件以触发浏览器的“另存为...”对话框)向用户提供服务器硬盘驱动器上的文件。 用户单击页面上的按钮,服务器根据其帐户设置(和其他参数)生成自定义数据文件,然后应弹出“另存为...”对话框。 我应该如何用Java脚本实现呢?

编辑:供您参考,该服务器具有Glassfish和Apache

简,

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

知道文件地址后,执行以下操作

window.location = http://yourserver.com/generatedfiles/file_2342342.txt

或者,执行以下操作:

window.location = http://yourserver.com/getgeneratedfile.aspx?fileID=2342342

...这会将用户重定向到提供所生成文件的页面。 然后,您需要在该页面的标题中指定content-disposition和filename,如Gandalf的回复所述。

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

设置Http Response标头:

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特定值,因为它在Firefox中不存在

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM