我正在使用此代码通过 PHP 提供文件下载服务:
$file='file.pdf';
$filepath="/path-to-download-folder/$file";
if(!file_exists($filepath)){
header('HTTP/1.1 404 Not Found');
exit;
}elseif(!is_file($filepath) or !is_readable($filepath)){
header('HTTP/1.1 403 Forbidden');
exit;
}else{
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Content-Type: '.mime_content_type($filepath));
header('Content-Length: '.filesize($filepath));
header('Content-Disposition: attachment; filename="'.$file.'"');
set_time_limit(0); // Big files/slow connections may result in incomplete downloads
readfile($filepath);
exit;
}
然而有些人收到了损坏的 PDF 文件。
在 Nginx 中我有这个:
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
我的问题是:如何设置不对 PDF 文件进行 gzip 压缩?也许这就是问题所在……
谢谢。
答案1
使用您当前的配置,您无法对 PDF 进行 gzip 压缩,但您可以使用 Firebug 或 Google PageSpeed 等工具进行检查
http://wiki.nginx.org/NginxHttpGzipModule#gzip_types
gzip_types
syntax: gzip_types mime-type [mime-type ...]
default: gzip_types text/html
context: http, server, location
Enables compression for additional MIME-types besides "text/html". "text/html" is always compressed.
但是,您是否尝试过使用 x-sendfile?