pathinfo PHP. Получаем информацию о файле

    Комментариев нет 5903

pathinfo php

Всем привет. В этой статье вы научитесь получать информацию о файле и применять полученные знания на практических примерах. И бонусом выведем размер файла. Когда это бывает нужно? Когда вы загружаете файлы с разными расширениями и нужно чтобы визуально они отличались друг от друга. Я имею в виду файлы с разными расширениями. Выглядеть это может примерно так:

Телеграм-канал serblog.ru

pathinfo php

Можно посмотреть на демо странице:

Демо

1
2
3
$url = 'path_to_file';
$parts = pathinfo($url);
var_dump($parts);

В итоге получает такой массив:

1
2
3
4
5
array (size=4)
  'dirname' => string '/files' (length=6)
  'basename' => string 'file.csv' (length=28)
  'extension' => string 'csv' (length=3)
  'filename' => string 'file' (length=24)
dirname Директория файла
basename Название файла
extension Расширение файла
filename Имя файла (без расширения)

Мы можем пойти чуть дальше и смоделировать ситуацию, когда в директорию загружено несколько файлов, пусть их будет три и мы знаем как называется этот каталог. Файлы: file.png, file.jpg, file.doc

1
2
3
4
5
$files = scandir($url);
foreach ($files as $file) {
  $path =  pathinfo($file);
    echo $path['basename'].'<br />';
}

Теперь подготовим иконки для отображения расширений файлов и внутри цикла создадим конструкцию switch case.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
foreach ($files as $file) {
  $path =  pathinfo($file);
   switch ($path_parts['extension']){
            case 'xlsx':
                $ind = '/img/icon_xlsx.png';
                break;
            case 'xls':
                $ind = '/img/icon_xls.png';
                break;
            case 'txt':
                $ind = '/img/icon_txt.png';
                break;
            case 'zip':
                $ind = '/img/icon_zip.png';
                break;
            case 'json':
                $ind = '/img/icon_js.png';
                break;
            case 'csv':
                $ind = '/img/icon_csv.png';
                break;
            case 'docx':
                $ind = '/img/icon_doc.png';
                break;
            case 'pdf':
                $ind = '/img/icon_pdf.png';
                break;
            case 'png':
                $ind = '/img/icon_png.png';
                break;
            case 'jpeg':
                $ind = '/img/icon_jpg.png';
                break;
            case 'jpg':
                $ind = '/img/icon_jpg.png';
                break;
            case 'MP4':
                $ind = '/img/icon_mp4.png';
                break;
            case 'JPG':
                $ind = '/img/icon_jpg.png';
                break;
            default: $ind = '/img/icon_file.png';
        }
}

Расширений файлов может быть гораздо больше, я прописал основные, но вы можете загружать в файловую систему только определенные типы файлов. Осталось сделать последний штрих и вывести размер каждого файла. Все в том же цикле после переменной $path пишем:

1
2
3
$kb = filesize($url.$path['basename']);
  echo '<img src="' . $ind . '" width="60" class="file_upload"/>
  echo $path['basename'].' - '.round($kb / 1024, 1).'kb<br />';

На этом все. Теперь вы знаете для чего нужна функция pathinfo. Если остались вопросы или есть какие-то замечания, пишите их в комментариях.

Любая сумма на развитие сайта

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *