Я загружаю некоторые файлы. Ниже часть скрипта для загрузки (я использую коды из https://github.com/blueimp/jQuery-File-Upload/blob/master/php/index.php)Определенный тип файла mime для одного и того же файла
$upload = isset($_FILES[$this->options['param_name']]) ?
$_FILES[$this->options['param_name']] : null;
$info = array();
if ($upload && is_array($upload['tmp_name'])) {
foreach ($upload['tmp_name'] as $index => $value) {
$info[] = $this->handle_file_upload(
$upload['tmp_name'][$index],
isset($_SERVER['HTTP_X_FILE_NAME']) ?
$_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
isset($_SERVER['HTTP_X_FILE_SIZE']) ?
$_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
isset($_SERVER['HTTP_X_FILE_TYPE']) ?
$_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
$upload['error'][$index]
);
}
Когда проверил, тип мима через $_SERVER['HTTP_X_FILE_TYPE']
или $upload['type'][$index]
возвращается application/vnd.openxmlformats-officedocument.presentationml.presentation
, application/vnd.openxmlformats-officedocument.wordprocessingml.document
для pptx
, docx
файлов соответственно.
Теперь, после завершения загрузки, я пытаюсь отобразить файлы, и я использую finfo_file()
, чтобы получить тип mime.
$mime_type = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $file_path);
echo $mime_type;
Для файлов изображений (например, PNG, JPEG) & PDF, возвращает тип, как и ожидалось, но для pptx
и docx
файлов, тип мим возвращаемые application/zip
.
Почему он не возвращается так же, как при загрузке? Что-то не так с моим кодом, или я должен ожидать этого? Как я могу решить, какой именно тип файла?
Так что, если я возьму 'finfo', есть способ определить тип файла дальше, чем просто определить, является ли это' zip'-файлом. Например, здесь, через «finfo», я смогу определить, является ли файл 'docx' или' pptx'? – ptamzz
Технически это естественно, например, вы можете начать писать парсер для любого указанного типа файла, который вы хотели бы идентифицировать. Однако это требует специальных знаний о типах файлов и может быть громоздким. Кроме того, библиотеки для разных типов файлов могут уже существовать, чтобы проверить, действительно ли файл. Это сильно зависит от того, что вы планируете делать с файлами, чтобы вы могли решить, какой уровень детализации вам нужен для вашего приложения. – hakre