php使用header和readfile无法下载zip文件的问题排查

项目有个需求,就是把一批二维码桌台号打包成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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章