项目有个需求,就是把一批二维码桌台号打包成zip文件后下载,在旧服务器上一直用的好好的,但最近切到k8s环境,发现不能下载了。 原来的代码如下:
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length: " . filesize($zipName));
header("Content-Disposition: attachment; filename=\"" . basename($zipName) . "\"");
readfile($zipName);
@unlink($zipName);
本来响应的content-type应该返回application/zip
的,却返回了application/json
,后来经运维同事协助,发现原来是nginx的gzip没有开启导致的。 不过在不开启gzip的情况下,还有另外一种方式也可以实现下载,代码如下:
header('Content-Description: File Transfer');
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length: " . filesize($zipName));
header("Expires: 0");
header("Cache-Control: must-revalidate");
header("Content-Disposition: attachment; filename=\"" . basename($zipName) . "\"");
ob_clean();
flush();
readfile($zipName);
@unlink($zipName);
exit;