簡體   English   中英

HTTP標頭的內容長度mod_deflate問題

[英]HTTP Header Content-Length mod_deflate problems

嗨,我在一個名為download.php的文件中有一個HTTP標頭,它強制下載。

PHP代碼:

$file = 'https://www.website.com/downloads/'.$download->stitle.'.zip';
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));

下載開始沒有問題,但總是損壞並且大小錯誤嗎?

我正在使用gzip壓縮,我認為這會導致下載的內容長度不正確,因為文件為603kb,但下載窗口顯示為2.2kb。

.htaccess:

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain \
text/html \
text/xml \
text/css \
text/x-component \
application/atom+xml \
application/xml \
application/xhtml+xml \
application/rss+xml \
application/javascript \
application/x-javascript \
application/json \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-font-woff \
application/font-woff2 \
application/x-web-app-manifest+json \
image/svg+xml \
image/x-icon


# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files> 

我添加了以下內容以排除zip文件和下載腳本:

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.zip$ no-gzip dont-vary
SetEnvIfNoCase Request_URI download\.php$ no-gzip dont-vary

但是下載的文件仍然損壞並且大小錯誤(7.7kb)。 現在,下載窗口不顯示文件大小。

我究竟做錯了什么?

編輯:我收到警告:filesize(): https ://www.website.com/downloads/free-font-family-poppins.zip的統計信息失敗

如果轉到該位置,文件將以正確的大小開始下載,因此該文件存在,我還將文件和文件夾的權限更改為777,以檢查這不是權限問題,但仍然出現相同的錯誤。

找到了解決方案。

filesize()函數不接受HTTP或HTTPS。

將文件位置更改為服務器文件路徑,現在可以正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM