在我的项目中,我使用的是Symfony 3 + Filesaver.js,我需要下载一个.gz文件。我使用以下代码对我的服务器执行ajax请求:
function requestAjax(json_data) {
var request = $.ajax({
url: '/ajax'
, method: 'post'
, data: json_data
});
return request;
}
var json_text = {'type': 'download_file'};
var request = requestAjax(json_text);
request.done(function (response) {
var blob = new Blob(
[response], {
type: "text/plain;charset=" + document.characterSet});
saveAs(blob, 'filename.gz');
});
在php方面,我执行以下操作:
$myfile = '/opt/myfile.gz';
$fp = fopen($myfile, "rb");
$response = base64_encode(fread($fp, filesize($myfile)));
fclose($fp);
return new Response($response);
但是当我尝试打开下载的文件时,出现错误,文件已损坏且无法读取(仍然可以在服务器上读取它,我知道文件正常)。所以问题是如何在php + javascript中下载带有ajax调用的.gz
文件。谢谢。