Javascript 如何启动使用jQuery自动下载zip文件的PHP脚本

Javascript 如何启动使用jQuery自动下载zip文件的PHP脚本,javascript,php,jquery,zip,Javascript,Php,Jquery,Zip,我正在编写使用PHP压缩文件并下载zip的代码,如何使用jQuery启动下载 当我通过浏览器重新加载PHP脚本时,文件通常以zip格式下载,但当我从jQuery发送请求时,当我在浏览器控制台中可视化时,文件会以乱码字符的形式从服务器返回。请不要担心,我可以使用php自动下载文件,但问题是当我尝试使用jQuery获取zip文件时 文件file.php中的php代码 $file_path = '/path/tofile/file.php' $file_name = basename($file_p

我正在编写使用PHP压缩文件并下载zip的代码,如何使用jQuery启动下载

当我通过浏览器重新加载PHP脚本时,文件通常以zip格式下载,但当我从jQuery发送请求时,当我在浏览器控制台中可视化时,文件会以乱码字符的形式从服务器返回。请不要担心,我可以使用php自动下载文件,但问题是当我尝试使用jQuery获取zip文件时

文件
file.php中的php代码

$file_path = '/path/tofile/file.php'
$file_name  = basename($file_path);
header('Content-Type: application/zip');
header("Content-Transfer-Encoding: Binary");
header('Content-Disposition: attachment; filename="'.$file_name.'"');
header("Content-Length: ".filesize($file_path));

flush();
readfile($file_path);
相应的ajax请求

$.get('file.php',  function(data)
{
}
);

我希望该文件可以作为普通的zip文件从jQuery下载,但是会将乱码字符发送到浏览器

我通过提供的解决方案解决了这个问题


我只是将请求类型从GET更改为POST,因为GET不允许我发送参数。

可能重复的请求类型不是重复的,问题更多地出现在jQuery方面
let urlToSend = "file.php";
let req = new XMLHttpRequest();
let formdata = new FormData();
formdata.append("user", "joe");
formdata.append("id", "10");

req.addEventListener("load", function (event) {
   console.log(req.response);
   let blob = req.response;
   let fileName = req.getResponseHeader("fileName"); //if you have the fileName header available
   let link=document.createElement('a');
   link.href=window.URL.createObjectURL(blob);
   link.download=fileName;
   link.click();
}, false);

req.open("POST", urlToSend, true);
req.responseType = "blob";
req.send(formdata);