php javascript下载.gz文件ajax

时间:2018-01-16 12:08:48

标签: javascript php symfony

在我的项目中,我使用的是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文件。谢谢。

0 个答案:

没有答案