ZipArchive :: проверить расширение файла

Следующий код распаковывает мой загруженный файл и извлекает все в каталоге с именем PDF. Затем он перебирает файлы и возвращает файлы для загрузки.

Моя проблема в том, что мне нужно проверить расширение файла. Я хотел бы только вернуть PDF-файл пользователю, но некоторые из загруженных файлов содержат ненужные изображения.

Как я могу проверить содержимое файла, чтобы убедиться, что распакованный файл является PDF & только PDF возвращается пользователю?

<?php
$zip = new ZipArchive;
$res = $zip->open('/download/xxxx.zip');
if ($res === TRUE) {
$zip->extractTo('/download/pdf/');

for($i = 0; $i < $zip->numFiles; $i++)
{
echo '<a href="/download/pdf/' . $zip->getNameIndex($i) . '">download</a>';
}

$zip->close();

} else {
echo 'Something went wrong :( ';
}
?>

Спасибо


Решение Dexas сработало для меня. Вот код, если вам это нужно
Я добавил в комментариях, чтобы показать, что я изменил.

<?php

$zip = new ZipArchive;
$res = $zip->open('/download/xxxxx.zip');
if ($res === TRUE) {
$zip->extractTo('/download/pdf/');

for($i = 0; $i < $zip->numFiles; $i++)
{
//Load files into variable which can be used with the following... ['dirname'], ['basename'], ['extension'], ['filename']
$path_parts = pathinfo('/download/pdf/' . $zip->getNameIndex($i));

//If the extension is equal to PDF echo the code out
if($path_parts['extension'] === 'pdf')
{
echo '<a href="/download/pdf/' . $zip->getNameIndex($i) . '">download</a>';
}
}

$zip->close();

} else {
echo 'Something went wrong :( ';
}

?>

0

Решение

Вы можете проверить его тип MIME, используя FINFO

$finfo = new finfo(FILEINFO_MIME);
$type = $finfo->file('/path/to/file');

if($type === 'application/pdf')
{
//do your stuff
}

Для расширения можно использовать PathInfo

$ext = pathinfo('/path/to/file', PATHINFO_EXTENSION);

В конце вы должны проверить оба и решить, является ли это PDF или нет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]