Jquery 用户单击对话框按钮时下载文件

Jquery 用户单击对话框按钮时下载文件,jquery,button,dialog,Jquery,Button,Dialog,当用户单击url时,我会打开一个对话框。在这个对话框中,我有两个按钮,“OK”(关闭对话框)和“download file”(我希望在单击时下载我刚刚通过PHP创建的文件)。如何使用“下载文件”按钮实现该功能 我尝试了$.get,但它只检索文件的数据,不提示用户下载文件 谢谢。在该按钮的单击处理程序中: window.location.href = "path/to/file/on/server.txt"; 顺便说一下,在这种情况下,您实际上不必写出文件。您可以使用URL重写使其成为一个“虚拟

当用户单击url时,我会打开一个对话框。在这个对话框中,我有两个按钮,“OK”(关闭对话框)和“download file”(我希望在单击时下载我刚刚通过PHP创建的文件)。如何使用“下载文件”按钮实现该功能

我尝试了$.get,但它只检索文件的数据,不提示用户下载文件


谢谢。

在该按钮的单击处理程序中:

window.location.href = "path/to/file/on/server.txt";
顺便说一下,在这种情况下,您实际上不必写出文件。您可以使用URL重写使其成为一个“虚拟文件”,它在访问时运行PHP代码以发出文件数据。将PHP更改为直接返回生成的文件数据,而不是将其写入文件

编辑:Apache中的虚拟文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /vfiles
    RewriteRule ~vfiles/([a-z]+)\.txt vfile-handler.php?id=$1 [L,QSA]
</IfModule>

重新启动发动机
重写基本/vfiles
重写规则~vfiles/([a-z]+)\.txt vfile handler.php?id=$1[L,QSA]

这表示它在Apache服务器内部被透明地重定向以运行vfile-handler.php,并将其“id=foo”作为查询字符串传递,您处理该查询字符串就像处理任何其他带有查询字符串的GET请求一样。然后,您的PHP脚本适当地设置MIME类型(
text/plain
,在本例中,因为我们声称它是一个.txt文件),并构建回复,就像我们正在动态构建HTML页面一样。

这非常有效!你能解释一下使用URL重写来创建“虚拟文件”是什么意思吗?他的意思是你可以使用类似于
window.location.href=“path/to/php/on/server.php?file=true”或类似的东西,如果查询变量
file
为true,你可以在php中返回文件(或一些id,取决于您需要什么).Blindy,您的解决方案可以在某些情况下工作,但这不是我所说的虚拟文件,因为它向外界公开了它实际上是由PHP生成的。我的解决方案隐藏了这一点,与您直接链接到的真实文本文件无法区分。当您需要在特定文件中命名下载的文件时,这一点非常重要r方法,例如利用目标计算机上的文件关联。如果将虚拟PDF发送到浏览器,则希望它在用户的PDF阅读器中打开。