Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menentukan Jenis Kandungan Fail dalam PHP?

Bagaimanakah Saya Boleh Menentukan Jenis Kandungan Fail dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-11-19 13:44:02318semak imbas

How Can I Determine the Content-Type of a File in PHP?

Menentukan Jenis Kandungan Fail dalam PHP

Apabila menghantar e-mel dengan lampiran, adalah penting untuk menentukan kandungan yang betul taip untuk fail itu. Ini membimbing klien e-mel dalam mengendalikan fail dengan sewajarnya. Dalam PHP, anda boleh mendapatkan semula jenis kandungan menggunakan pelbagai kaedah.

Menggunakan 'finfo_file()' (Disyorkan)

Jika versi PHP anda menyokong sambungan fiinfo, anda boleh menggunakan 'finfo_file()' untuk mendapatkan jenis mime fail. Berikut ialah contoh:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$contentType = finfo_file($finfo, $file);
finfo_close($finfo);

Menggunakan 'mime_content_type()'

Alternatif lama kepada 'finfo_file()' ialah fungsi 'mime_content_type()'. Walau bagaimanapun, ia mungkin tidak tersedia dalam semua versi PHP.

require_once 'upgradephp/ext/mime.php'; // Load the mime extension if necessary
$contentType = mime_content_type($file);

Pilihan Sandar

Jika kedua-dua kaedah di atas tidak memberikan hasil yang boleh dipercayai, anda boleh mempertimbangkan untuk menggunakan pilihan sandaran ini:

  • exec('file -b --mime-type ...'): Jalankan arahan 'fail' pada fail untuk mendapatkan jenis mimenya. Kaedah ini berfungsi pada *sistem NIX.
  • exif_imagetype(): Jika fail ialah imej, fungsi ini boleh menentukan jenis mimenya.
  • 'upgradephp /ext/mime.php': Upgrade.php menyediakan fungsi fallback mime_content_type() yang boleh mengisi kekosongan untuk versi PHP yang lebih lama.

Contoh Penggunaan

Berikut ialah contoh yang menggabungkan semua pilihan ini:

function getFileMimeType($file) {
    $contentType = null;

    if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $contentType = finfo_file($finfo, $file);
        finfo_close($finfo);
    } elseif (function_exists('mime_content_type')) {
        require_once 'upgradephp/ext/mime.php';
        $contentType = mime_content_type($file);
    } elseif (is_file($file)) {
        // Executing 'file' command
    } elseif (@exif_imagetype($file)) {
        // Determining image mime type
    }

    return $contentType;
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Jenis Kandungan Fail dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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