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
699 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!

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