Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah anda menentukan `Content-Type` bagi fail dalam PHP?

Bagaimanakah anda menentukan `Content-Type` bagi fail dalam PHP?

Mary-Kate Olsen
Lepaskan: 2024-11-27 07:52:14
asal
668 orang telah melayarinya

How do you determine the `Content-Type` of a file in PHP?

Memahami Pengenalpastian Jenis Kandungan dalam PHP

Apabila melampirkan fail pada e-mel, adalah penting untuk menentukan jenis kandungannya dengan tepat. PHP menyediakan pelbagai kaedah untuk mencapainya.

Fungsi untuk Menentukan Jenis Kandungan

Untuk menangani keperluan ini, penyelesaian yang disediakan menawarkan fungsi berikut:

function getFileMimeType($file) {
    // Attempt to use PHP finfo functions
    if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $type = finfo_file($finfo, $file);
        finfo_close($finfo);
    }
    
    // Fallback to mime_content_type alternative
    else {
        require_once 'upgradephp/ext/mime.php';
        $type = mime_content_type($file);
    }
    
    // Further fallbacks if previous attempts failed
    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        // Use file command if available
        $secondOpinion = exec('file -b --mime-type ' . escapeshellarg($file), $foo, $returnCode);
        if ($returnCode === 0 && $secondOpinion) {
            $type = $secondOpinion;
        }
    }
    
    if (!$type || in_array($type, array('application/octet-stream', 'text/plain'))) {
        // Attempt to use exif_imagetype for images
        require_once 'upgradephp/ext/mime.php';
        $exifImageType = exif_imagetype($file);
        if ($exifImageType !== false) {
            $type = image_type_to_mime_type($exifImageType);
        }
    }
    
    return $type;
}
Salin selepas log masuk

Penjelasan Fungsi

Fungsi ini cuba menggunakan PHP fungsi finfo untuk mengenal pasti jenis mime. Jika gagal, ia akan kembali kepada fungsi mime_content_type. Sekiranya kedua-dua ini tidak berfungsi, ia cuba untuk melaksanakan arahan 'fail' pada sistem *NIX. Akhir sekali, ia menggunakan exif_imagetype untuk menentukan jenis mime untuk imej.

Perlu diperhatikan bahawa pelayan yang berbeza mempunyai sokongan yang berbeza-beza untuk fungsi jenis mime, dan penggantian Upgrade.php mime_content_type mungkin tidak sentiasa boleh dipercayai. Walau bagaimanapun, fungsi exif_imagetype cenderung untuk melaksanakan secara konsisten merentas pelayan. Jika semata-mata berkenaan dengan fail imej, anda boleh mempertimbangkan untuk menggunakan fungsi ini sahaja untuk penentuan jenis mime.

Atas ialah kandungan terperinci Bagaimanakah anda menentukan `Content-Type` bagi fail dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan