我正在用PHP创建一个zip-fly文件。创建文件没有问题。即使我将它设置为不保存在服务器上,但立即开始下载。
在该文件中,我通过按下按钮从另一个文件中调用jquery。代码如下。
$(".down").on("click",function(){
id = this.id;
$.ajax({
type: "POST",
url: "files/down.php",
data: "id="+id,
cache: false,
success: function(data){
//alert(data)
}
});
});
我希望当你点击按钮时我会显示浏览器下载窗口而我不这样做...而且不知道如何......
一切正常,因为如果我告诉PHP将文件保存在服务器上。如果你告诉我alert()
中的答案让我充满了奇怪的符号,那么有些东西正在回归,而不是如何通过下载窗口回复给我。
有谁知道怎么做?
答案 0 :(得分:-1)
如果您不想使用Iframe。
我成功使用了这个方法:
我使用的代码。
在js部分只需调用ajax请求,并等到它完成, 这就是我用来将文件返回到服务器端的脚本以获取伪文件位置。:
$fakefile = $doc['doc_name'];
$finfo = new finfo(FILEINFO_MIME);
$mm_type = $finfo->file($realfile);
header("Cache-Control: public, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($realfile)) );
header('Content-Disposition: attachment; filename="'.$fakefile.'"');
header("Content-Transfer-Encoding: binary");
readfile($realfile);
exit;
回到js:捕捉回复:
$.post( href, null,
function(data) {
// file exist and is downloadable for user - call it for real.
if(data.success === 1) {
window.location.replace(href);
}
// there were errors - display message.
}
},'json');
希望它有所帮助。