PHP, Üstbilgi (Ekran görüntüsü)

4 Cevap php

Ben böyle, benim web kök dışından gelen görüntüleri gösteremeyecek ediyorum:

header('Content-type:image/png');
readfile($fullpath);

İçerik-type: image / png beni karıştırıyor budur.

Someone else helped me out with this code, but I noticed that not all images are PNG. Many are jpg or gif.
And still they are displayed successfully.

Herkes neden biliyor mu?

4 Cevap

En iyi çözüm dosyasında okumak olmak, sonra o görüntünün hangi tür karar ve uygun başlık göndermek istiyorsunuz

$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));

switch( $file_extension ) {
    case "gif": $ctype="image/gif"; break;
    case "png": $ctype="image/png"; break;
    case "jpeg":
    case "jpg": $ctype="image/jpg"; break;
    default:
}

header('Content-type: ' . $ctype);

Tarayıcılar aldıkları veriler ile en iyi tahmin yapmak. Bu biçimlendirme için çalışıyor (Web siteleri genellikle yanlış olsun) ve diğer medya içeriği. Bir dosya alır bir program sık sık söylendi ne olursa olsun onun MIME içerik türü alınan anlamaya olabilir.

Bu ancak güvenmek gereken bir şey değildir. Bu her zaman doğru MIME içeriğini kullanmak önerilir.

Tarayıcılar genellikle görüntünün meta bilgileri koklama ile görüntü türünü söyleyebilir. Ayrıca, bu başlıkta bir boşluk olmalıdır:

header('Content-type: image/png');

Bir görüntünün türünü belirlemek için neden bir daha vardır. exif_imagetype ile

Bu işlevi kullanırsanız, görüntünün gerçek uzantısı söyleyebilirim.

with this function filename's extension is completely irrelevant, which is good.

function set-header-content-type($file)
{
    //Number to Content Type
    $ntct = Array( "1" => "image/gif",
                   "2" => "image/jpg",
                   "3" => "image/png",
                   "6" => "image/bmp",
                   "17" => "image/ico");

    header('Content-type: ' . $ntct[exif_imagetype($file)]);
}

Sen the link daha türlerini ekleyebilirsiniz.

Umarım yardımcı olur.