2009-10-13 149 views
1

我使用PHP的imagejpeg對GD圖像資源保存到一個文件,這樣做:PHP imagejpeg MIME類型

imagejpeg($im, '../images/' . $image_id . '.jpg'); 

它工作正常,但根據我的瀏覽器,它試圖讀取該文件爲文本/ plain:

將資源解釋爲圖像,但以MIME類型text/plain傳輸。

在保存文件之前,我應該做些什麼來確保它使用正確的防雷類型?

我使用Windows(XAMPP),它可能是Windows的問題? 編輯:不。我只是在一臺linux服務器上測試過。

就實際顯示而言,它只是簡單的html。 我的上傳代碼應該在服務器中保存爲一個普通的jpeg文件。這只是沒有保存適當的MIME類型。

感謝

+0

有關這方面的消息嗎? –

回答

0

這聽起來像你傾倒文件的內容到瀏覽器並沒有真正告訴瀏覽器是什麼類型的文件。在將圖像輸出到瀏覽器之前,嘗試添加內容類型標題:

header('Content-type: image/jpeg'); 
+0

不,不,實際上我用舊的方式展示我的圖片:。我的上傳腳本保存了一個靜態jpeg文件。 –

0

確定您沒有使用錯誤的文件擴展名? 否則,只需在服務器上放置一個正常的圖像,並確保mime類型配置正確。 這也可能是您操作的圖像數據已損壞。

+0

我的文件擴展名是.jpg。 我剛剛通過手動上傳圖片進行測試,並且MIME類型在那裏是正確的。所以它確實是關於php在服務器上保存圖像的方式。 –

1

AFAIK,Apache服務器 - 採用標準的開箱即用配置 - 應該純粹基於文件擴展名發送內容類型標頭。 Apache甚至不應該查看內容或者最初生成/存儲的內容。

在我出的現成的Apache2,該文件的conf /的mime.types包含行:

image/jpeg jpeg jpg jpe

它應該做的,不是嗎?

你可以發佈一個測試用例,比如說一個帶有兩個img標籤的簡單html頁面:一個用於生成的圖像,另一個用於標準圖像,看起來工作正常嗎?

最後一個想法:它是否發生在所有瀏覽器?也許這是瀏覽器問題,而不是服務器問題?