2010-05-14 71 views
5

Tôi đang cố gắng hiển thị hình ảnh nội dòng trên một trang. Nó đang được phục vụ bởi một bộ điều khiển codeigniter.Bố cục nội dung: tiêu đề nội tuyến sẽ không hiển thị hình ảnh nội dòng?

class Asset extends MY_Controller { 

    function index($folder, $file) { 

     $asset = "assets/$folder/$file"; 

     if (!file_exists($asset)) { 
      show_404(); 
      return; 
     } 

     switch ($folder) { 
     case 'css': 
      header('Content-type: text/css'); 
      break; 
     case 'js': 
      header('Content-type: text/javascript'); 
      break; 
     case 'images': 
      $ext = substr($file, strrpos($file, '.')); 
      switch ($ext) { 
      case 'jpg': 
       $ext = 'jpeg'; 
       break; 
      case 'svg': 
       $ext = 'svg+xml'; 
       break; 
      } 

      header('Content-Disposition: inline'); 
      header('Content-type: image/'.$ext); 
     } 

     readfile($asset); 
    } 

} 

Khi tôi tải hình ảnh trong Chrome của FF, bật lên cửa sổ tải xuống. Tôi biết khi nào trình duyệt không thể hiển thị nội dung trực tuyến, nó sẽ bắt buộc tải xuống, nhưng đây là hình ảnh PNG và GIF hiển thị trong trình duyệt nếu không thì tốt. Trong IE nó không bắt buộc tải xuống nhưng nó hiển thị hình ảnh trong ASCII.

Nếu tôi nhận xét toàn bộ trường hợp hình ảnh, FF và Chrome đều hiển thị ASCII nhưng không hiển thị hình ảnh.

Tôi nghĩ đặt loại nội dung sẽ cho phép FF và Chrome hiển thị hình ảnh thực tế và cũng cho phép vị trí được sử dụng làm src.

javascript và css hiển thị tốt tất nhiên.

Bất kỳ ai có ý tưởng nào về cách tôi có thể làm cho hình ảnh hiển thị đúng cách?

Trả lời

5

Thử xóa tiêu đề Bố cục nội dung. Theo mặc định, chúng sẽ được hiển thị nội dòng.

Dù sao, bạn nên làm điều gì đó sai. Tôi vừa thử nghiệm trong Opera và IE và họ thực sự hiển thị hình ảnh nội tuyến với tiêu đề bố trí nội dung. Tôi đã sử dụng:

<?php 
header('Content-Disposition: inline'); 
header('Content-type: image/png'); 

readfile('Untitled.png'); 

Sử dụng công cụ dev của trình duyệt để kiểm tra tiêu đề phản hồi.

EDIT

Có lẽ lỗi này gây ra vấn đề:

<?php 
echo substr("file.ext", strrpos("file.ext", '.')); 

cho ".ext" không "ext". Thay thế cho strrpos() + 1.

+0

Ồ đã sửa nó. Cảm ơn! :) – hamstar

Các vấn đề liên quan