Kiểm tra kiểu của file với PHP (filetype())

24/07/2020 - lượt xem
Chia sẻ
 
Rate this post

Định Nghĩa.

Hàm filetype() sẽ lấy kiểu của file truyền vào.

Cú pháp.

Cú pháp:

filetype ( string $filename ) : string

Trong đó.

  • $filename là đường dẫn tới file.

Giá trị trả về.

  • Trả về loại tệp. Các giá trị có thể là fifo, char, dir, block, link, file, socket và unknown.
  • Trả về SAI nếu xảy ra lỗi. filetype () cũng sẽ tạo một thông báo E_NOTICE nếu cuộc gọi stat không thành công hoặc nếu loại tệp không xác định.

Ví dụ.

ví dụ 1 filesize() đơn giản.

code:

<?php

echo filetype('/etc/passwd');  // file
echo filetype('/etc/');        // dir

?>

Errors/Exceptions.

  • Khi thất bại, Một cảnh báo E_WARNING được phát ra.

Ghi chú.

  • Kết quả của chức năng này được lưu trữ. Xem Clearstatcache () để biết thêm chi tiết.
  • Kể từ phiên bản PHP 5.0.0, chức năng này cũng có thể được sử dụng với một số trình bao bọc URL. Tham khảo các Supported Protocols and Wrappers  để xác định nhóm chức năng hỗ trợ stat() nào.

Hàm liên quan.

  • is_dir() – Kiểm tra xem đây có file một thư mục.
  • is_file() – Cho biết tên tệp có phải là tệp thông thường không
  • is_link() – Cho biết tên tệp có phải là một liên kết tượng trưng không
  • file_exists() – Kiểm tra xem tồn tại file hay thư mục không.
  • mime_content_type() – Detect MIME Content-type for a file
  • pathinfo() – Trả về thông tin về đường dẫn tệp
  • stat() – Trả về thông tin file.
  •  

Thông tin thêm.

  • Có 7 giá trị có thể được trả về. Dưới đây là danh sách và ý nghĩa của từng giá trị block: khối thiết bị đặc biệt char: nhân vật thiết bị đặc biệt thư mục: fifo: FIFO (tên ống) tập file: tập tin thường xuyên l link: liên kết tượng trưng unknown: loại tệp không xác định
  • filetype () không hoạt động đối với các tệp> = 2GB trên x86 Linux. Bạn có thể sử dụng stat như một cách giải quyết::
    $type=trim(`stat -c%F $file`);
    Lưu ý rằng stat trả về các chuỗi khác nhau (“tệp thông thường”, “thư mục”, …)
  • Tôi sử dụng phiên bản CLI của PHP trên Windows Vista. Dưới đây là cách xác định xem một tệp có bị đánh dấu “ẩn” bởi NTFS không:
    <?php
    function is_hidden_file($fn) {
    
        $attr = trim(exec('FOR %A IN ("'.$fn.'") DO @ECHO %~aA'));
    
        if($attr[3] === 'h')
            return true;
    
        return false;
    }
    ?>
    Thay đổi <?php if($attr[3] === 'h'?> to <?php if($attr[4] === 's'?> sẽ kiểm tra file hệ thống
    // Điều này sẽ hoạt động trên bất kỳ HĐH Windows nào cung cấp các lệnh shell DOS.
  • Đặt @ trước hàm filetype () sẽ không ngăn nó đưa ra cảnh báo (Lstat không thành công), nếu E_WARNING được bật trên error_Vporting của bạn. Nguyên nhân phổ biến nhất khiến filetype () đưa ra cảnh báo này và không hiển thị filetype () trong đầu ra (nó thực sự trả về NULL) là, nếu bạn tình cờ chỉ truyền ‘thư mục hoặc tên file ‘ và không hoàn toàn là “Tuyệt đối hoặc Tương đối Đường dẫn “đến tập tin đó hoặc thư mục”. Nó vẫn có thể đọc tệp đó và trả về kiểu tệp của nó dưới dạng “file” nhưng đối với thư mục , nó hiển thị cảnh báo và xuất ra NULL.
    eg:
    $pathToFile = '/var/www';
    $file = 'test.php';
    $dir = 'somedir';
    Đầu ra cho filetype ($ file) sẽ được trả về dưới dạng ‘file’ và có thể không có bất kỳ cảnh báo nào, nhưng đối với filetype ($ dir), nó sẽ trả về NULL với cảnh báo “Lstat fail”, trừ khi bạn chuyển một đường dẫn hoàn chỉnh tới dir đó, tức là filetype ($ pathToFile. ‘/’. $ dir).

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm filetype() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm