1
我有這樣的代碼,PNG文件輸出到瀏覽器PHP:PNG ReadFile的編碼問題
header('Content-type: image/png');
header("Content-Length: " . filesize($cache_file));
readfile($cache_file);
exit();
文件$cache_file
保存這樣
imagepng(self::$image, self::$cache);
的瀏覽器顯示一個破碎的形象。當我下載它並用npp打開它時,我發現它的編碼爲UTF-8
,所以我將封裝改爲ANSI
,並且它在Windows資源管理器上正確顯示
什麼可能導致此編碼問題?如何在保存或讀取文件時修復它?
編輯:當我直接打開PNG上的瀏覽器,它會顯示正確,這意味着該問題是在readfile
水平ocurring這不是我的服務器,所以我應該檢查哪些服務器設置/修改?
解決方案: 我以前imagepng
輸出圖像內容
public static function outputPNG($file)
{
//clear any previous buffer
ob_clean();
ob_end_clean();
header('Content-type: image/png');
//i will be only outputting PNG images
$im = imagecreatefrompng($file);
imagesavealpha($im, true);
imagealphablending($im, true);
imagepng($im);
exit();
}
一個PNG不應該(重新)編碼,而不是作爲UTF8而不是ANSI。兩者都是文本編碼,而PNG文件是二進制文件。 – usr2564301
這實際上是一個問題,因爲readfile似乎是在引用內容!有沒有解決方案來避免這種情況?該項目已部署在其他幾臺服務器上,但這是問題的第一次發生 – UnLoCo
您是否嘗試過設置header('Content-Transfer-Encoding:binary');'和header('Content-Description:File Transfer') ;'? – VolenD