현재 위치: > 최신 기사 목록> 파일 지문의 배치 생성을 달성하기 위해 scandir ()와 결합 된 php의 md5_file () 함수를 사용하는 방법은 무엇입니까?

파일 지문의 배치 생성을 달성하기 위해 scandir ()와 결합 된 php의 md5_file () 함수를 사용하는 방법은 무엇입니까?

M66 2025-06-15

실제 개발에서 파일 지문 (파일 해시 값)은 파일 무결성을 검증하거나 변조 방지 또는 파일 중복 제거 및 기타 기능을 구현하는 데 사용되는 일반적인 요구 사항입니다. PHP는 강력한 내장 기능 MD5_File ()을 제공하며 파일의 MD5 해시 값을 쉽게 얻을 수 있습니다. scandir () 함수와 결합하여 지정된 디렉토리의 모든 파일의 배치 지문 생성을 쉽게 달성 할 수 있습니다.

이 기사는 MD5_File ()Scandir ()를 사용하여 파일 지문의 배치 생성을 달성하고 완전한 샘플 코드를 제공하는 방법을 자세히 소개합니다.


1. 기능 소개

  • md5_file (String $ filename) : String | false

    지정된 파일의 MD5 해시 값을 계산하고 32 비트 문자열을 반환하고 읽기가 실패하면 False를 반환합니다.

  • scandir (문자열 $ directory, int $ sorting_order = scandir_sort_ascending) : Array | false

    지정된 디렉토리에 모든 파일 및 하위 디렉토리를 가져 와서 파일 이름을 포함하는 배열을 반환합니다.


2. 구현 아이디어

  1. scandir ()를 사용하여 대상 디렉토리에서 모든 파일과 폴더 이름을 가져옵니다.

  2. 특수 디렉토리를 필터링하십시오 . 그리고 ... 디렉토리 항목에서.

  3. 모든 파일을 반복하고 md5_file ()을 사용하여 MD5 지문을 얻으십시오.

  4. 파일 이름과 해당 MD5 ​​값을 배열 또는 출력에 저장합니다.


3. 샘플 코드

 <?php
$directory = '/path/to/your/files'; // 스캔하려는 디렉토리 경로로 바꾸십시오.

// 디렉토리를 스캔하십시오
$files = scandir($directory);

if ($files === false) {
    die('디렉토리 읽기가 실패했습니다');
}

$fileHashes = [];

foreach ($files as $file) {
    // 필터링 '.' 그리고 '..'
    if ($file === '.' || $file === '..') {
        continue;
    }

    $filePath = $directory . DIRECTORY_SEPARATOR . $file;

    // 파일 만 처리합니다,하위 디렉토리를 무시하십시오
    if (is_file($filePath)) {
        $hash = md5_file($filePath);
        if ($hash !== false) {
            $fileHashes[$file] = $hash;
        } else {
            $fileHashes[$file] = '읽지 못했습니다';
        }
    }
}

// 출력 결과
foreach ($fileHashes as $filename => $md5) {
    echo "파일 이름:{$filename},MD5 지문:{$md5}" . PHP_EOL;
}
?>

4. 주목할만한 것들

  • PHP 스크립트에 디렉토리를 읽을 수있는 권한이 있는지 확인하기 위해 디렉토리 경로를 서버의 실제 경로로 작성해야합니다.

  • 이 샘플 코드는 지정된 디렉토리의 첫 번째 파일 계층 만 처리하며 하위 디렉토리로 다시 반복하지 않습니다. 재귀가 필요한 경우, 재귀 함수 또는 재귀 유효성 검사기 와 함께 구현 될 수 있습니다.

  • md5_file ()은 작은 파일의 빠른 지문 생성에 적합합니다. 메모리 오버플로를 피하기 위해 해시 값을 계산하기 위해 청크를 사용하는 것이 좋습니다.


5. 확장 : URL과 함께 원격 파일 처리

때로는 원격 파일에서 지문을 생성해야합니다. md5_file ()은 원격 파일 URL을 지원하지만 원격 서버가 액세스를 제한하면 실패 할 수 있습니다. 계산하기 전에 파일을 로컬 임시 디렉토리로 다운로드하는 것이 좋습니다.

예 (회로도) :