Как получить MIME-тип файла для скачивания? - PullRequest
3 голосов
/ 11 февраля 2011

Мне нужно скачать указанный файл по щелчку ссылки, для чего я использовал приведенный ниже скрипт, но я, когда файл загружен, не может определить расширение загруженного файла. Итак, как получить MIME-тип файла для скачивания? _Пожалуйста, помогите ...

$filename = $_GET['val'];
         // Fetch the file info.
    $filePath = $_SERVER['DOCUMENT_ROOT'] . "dfms/images/uploads/".$filename;


    if(file_exists($filePath)) {
        echo $fileName = basename($filePath);
        $fileSize = filesize($filePath);

        // Output headers.
        header("Cache-Control: private");
        header("Content-Type: application/octet");
        header("Content-Length: ".$fileSize);
        header("Content-Disposition: attachment; filename=".$fileName);

        // Output file.
        readfile ($filePath);                   
        exit();
    }
    else {
        die('The provided file path is not valid.');
    }

1 Ответ

7 голосов
/ 11 февраля 2011

Использование функции finfo_file из расширения FileInfo (по умолчанию включено в PHP 5.3). http://www.php.net/manual/en/function.finfo-file.php

Из примера в документации

$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, $filename);
finfo_close($finfo);

В версиях PHP до 5.3 может быть установлено расширение pecl http://pecl.php.net/package/Fileinfo

Однако в этом случае требуется библиотека magic_open (libmagic) http://sourceforge.net/projects/libmagic

Альтернатива - использовать устаревшую функцию mime_content_type($filename) http://au.php.net/manual/en/function.mime-content-type.php

Что зависит от файла mime.magic

...