Javascript 如何启动使用jQuery自动下载zip文件的PHP脚本
我正在编写使用PHP压缩文件并下载zip的代码,如何使用jQuery启动下载 当我通过浏览器重新加载PHP脚本时,文件通常以zip格式下载,但当我从jQuery发送请求时,当我在浏览器控制台中可视化时,文件会以乱码字符的形式从服务器返回。请不要担心,我可以使用php自动下载文件,但问题是当我尝试使用jQuery获取zip文件时 文件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
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);