현재 위치: > 최신 기사 목록> PHP 파일 업로드 및 다운로드 기능 튜토리얼: 처음부터 완전한 예제 구축

PHP 파일 업로드 및 다운로드 기능 튜토리얼: 처음부터 완전한 예제 구축

M66 2025-10-09

PHP는 파일 업로드 및 다운로드 기능을 구현합니다.

웹사이트 개발에서 파일 업로드와 다운로드는 매우 일반적인 기능입니다. 사진, 문서, 압축 패키지 등 많은 웹사이트에서 업로드 및 다운로드를 위한 입구를 제공합니다. 이 기사에서는 PHP를 사용하여 HTML 양식, 업로드 로직 및 다운로드 스크립트를 포함한 간단한 파일 업로드 및 다운로드 기능을 작성하는 방법을 자세히 소개합니다.

파일 업로드 기능 구현

먼저, 사용자가 파일을 선택하고 업로드할 수 있도록 페이지에 양식을 만들어야 합니다.

 <form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="업로드">
</form>

위의 코드에서:

  • action 속성은 upload.php 로 양식 제출을 위한 처리 스크립트를 지정합니다.
  • 메소드 속성이 POST 로 설정되었습니다.
  • enctype 속성은 파일 업로드를 지원하는 데 사용되는 multipart/form-data 입니다.

다음으로 upload.php 파일에 백엔드 로직을 작성합니다.

 <?php
$targetDir = "uploads/"; // 업로드文件的存储目录
$targetFile = $targetDir . basename($_FILES["file"]["name"]); // 업로드后的文件路径

// 파일 형식 확인
$fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
$allowedTypes = array("jpg", "jpeg", "png", "gif");

if (!in_array($fileType, $allowedTypes)) {
    echo "只允许업로드图片文件!";
    exit;
}

// 지정된 디렉터리로 파일 이동
if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) {
    echo "文件업로드成功!";
} else {
    echo "文件업로드失败!";
}
?>

위 코드는 move_uploaded_file() 함수를 통해 임시 파일을 대상 폴더로 이동하고, 업로드하기 전에 파일 형식에 대한 보안 검사를 수행합니다. 실제 개발에서는 파일 크기 확인, 파일 이름 무작위 변경 등 보안이 더욱 강화될 수 있습니다.

파일 다운로드 기능 구현

파일이 업로드되면 페이지에 다운로드할 수 있는 파일 목록을 표시할 수 있습니다. 예를 들어:

 <?php
$files = glob("uploads/*"); // 얻다uploads디렉토리의 모든 파일

foreach ($files as $file) {
    $fileName = basename($file);
    echo "<a href='download.php?file={$fileName}'>{$fileName}</a><br>";
}
?>

위 코드는 glob() 함수를 사용하여 업로드 디렉토리를 스캔하고 각 파일에 대해 클릭 가능한 다운로드 하이퍼링크를 생성합니다.

그런 다음 download.php 파일에 다운로드 처리 로직을 작성합니다.

 <?php
$fileName = $_GET["file"];
$filePath = "uploads/" . $fileName;

if (file_exists($filePath)) {
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename={$fileName}");
    readfile($filePath);
} else {
    echo "파일이 존재하지 않습니다!";
}
?>

스크립트는 file_exists()를 통해 파일이 존재하는지 확인하고 브라우저가 다운로드를 트리거할 수 있도록 응답 헤더를 설정합니다. 보안 문제를 방지하기 위해 프로덕션 환경에 파일 이름 필터링 및 권한 확인을 추가하는 것이 좋습니다.

요약

이 기사의 예제를 통해 PHP에서 파일 업로드 및 다운로드 기능을 구현하는 기본 방법을 빠르게 익힐 수 있습니다. 예제는 비교적 기본적이지만 초보자가 파일 처리 과정을 이해하는 데 매우 적합합니다. 실제 프로젝트에서는 이를 기반으로 파일 크기 제한 확대, 로그 기록 업로드, 권한 제어 등을 확장해 보안성과 안정성을 향상시킬 수 있다.