2013-01-03 20 views
6

Tất cả chúng ta đều ghét Internet Explorer khi xây dựng các mẫu HTML hoặc sửa đổi trang web. Gần đây tôi đã xây dựng một tập lệnh hình ảnh PHP để ẩn vị trí của URL. Nó hoạt động tốt cho Firefox, Chrome và thậm chí cả Safari.Tiêu đề PHP - Loại nội dung: hình ảnh/jpeg - Không hoạt động cho Internet Explorer

Internet Explorer từ chối hiển thị hình ảnh từ tập lệnh PHP. Nó thậm chí không cung cấp cho các biểu tượng hình ảnh bị hỏng. Chỉ cần ô vuông trống.

Android cũng có cùng một vấn đề, nhưng tôi có thể đến một thời điểm khác và có thể có liên quan.

Đây là mã của tôi cho kịch bản hình ảnh:

$image_id = $_GET['id']; 

include "mysql_connect.php"; 
$sql = "SELECT * FROM images WHERE code='$image_id'"; 
$result = mysql_query($sql); 
$r=mysql_fetch_array($result); 

$imagepath=$r['path']; 

// Produce proper Image 
header("Content-type: image/jpeg"); 

echo file_get_contents("$imagepath"); 

Tôi đã tìm kiếm cao và thấp trên Google và trang web này. Không thể tìm thấy nguồn giải thích lý do tại sao Internet Explorer không hiển thị hình ảnh.

Bất kỳ trợ giúp nào được đánh giá cao.

+0

Đầu ra *** thô *** của tập lệnh này là gì? Nó có giống với dữ liệu JPEG trên đĩa không? Không có dấu đầu dòng hoặc đầu ra trước? – deceze

+0

Đối với Firefox, nó hiển thị hình ảnh. Internet Explorer hiển thị mã ASCII nó xuất hiện. Tôi cũng đã thử sử dụng include ($ imagepath); – JCastell

+1

Hoặc bạn đang xuất ra khoảng trắng trước hoặc sau dữ liệu hình ảnh hoặc bạn thiếu tiêu đề có độ dài nội dung. Bạn cũng có và SQL injection vấn đề với kịch bản này. – datasage

Trả lời

8

Tên tiêu đề Content-Type được viết bằng chữ hoa T. Tôi không chắc đó có phải là vấn đề hay không, nhưng một số trình duyệt có thể không nhận ra tiêu đề Kiểu nội dung khi nó được viết bằng chữ thường. Vì vậy, bạn nên sử dụng:

header("Content-Type: image/jpeg"); 

Cái gì khác mà có thể là một vấn đề, là khi bạn cố gắng để hiển thị một hình ảnh mà không phải là một định dạng jpeg, nhưng một png hay gif, trong khi bạn cung cấp cho các image/jpeg trang nội dung loại tiêu đề. Vì vậy, bạn nên đảm bảo rằng bạn cung cấp đúng loại nội dung cho trình duyệt.

+0

Cố định vốn T. Hiện tại tôi chỉ đang thử nghiệm với JPEG. – JCastell

2

Trình khám phá Internet sử dụng loại mime image/pjpeg. Bạn sử dụng pjpeg cho IE và jpeg cho các trình duyệt khác.

header("Content-Type: image/pjpeg"); 

Nguồn: image/pjpeg and image/jpeg

+0

Internet Explorer cần hình ảnh/pjpeg làm kiểu nội dung chỉ dành cho các jp được mã hóa lũy tiến –

+0

Tôi đọc ở đâu đó và thử nó. Thử lại lần nữa. Vẫn không có may mắn. – JCastell

+0

Tôi đã thử nhưng vẫn thất bại! –

0

Đặt tiêu đề chiều dài nội dung.

header("Content-Length: " . filesize($imagepath)); 
+0

Đề nghị tốt, tôi đã thêm một chút trong khi trước khi Datasage đề nghị nó. Không có dấu cách màu trắng. – JCastell

-2

Tôi nghĩ rằng tôi biết vấn đề là gì!

IE mong bạn sử dụng hình ảnh/jpeg chứ không phải hình ảnh/jpg. hãy thử cách này: Tiêu đề ("Loại Nội dung: hình ảnh/jpeg");

thực tế tất cả các trình duyệt đều tuân theo cách này! bạn không phải lo lắng nữa!