PHP 학습 노트: 파일 업로드 및 다운로드
소개:
최신 네트워크 애플리케이션에서 파일 업로드 및 다운로드는 매우 일반적인 기능 요구 사항입니다. 사용자가 사진, 오디오, 비디오 및 기타 파일을 업로드하거나 웹 사이트에서 제공하는 리소스 파일을 다운로드하는 경우 파일 업로드 및 다운로드는 필수 기능 중 하나입니다. 이 기사에서는 PHP 언어를 사용하여 파일 업로드 및 다운로드 기능을 구현하는 방법을 소개하고, 독자가 그 원리와 구체적인 구현 방법을 깊이 이해할 수 있도록 구체적인 코드 예제를 제공합니다.
1. 파일 업로드
파일 업로드는 로컬 파일을 원격 서버로 보내는 프로세스를 의미하며 사용자가 사진, 오디오, 비디오 및 기타 파일을 업로드하는 경우에 자주 사용됩니다. PHP에서 파일 업로드는 주로 $_FILES 전역 변수 및 관련 기능에 의존합니다.
1.1 파일 업로드 원리
파일 업로드의 원리는 HTTP 프로토콜의 POST 요청을 통해 파일 내용을 서버로 보내고, 서버 측에서 지정된 디렉터리에 파일을 저장하는 것입니다. 구체적인 단계는 다음과 같습니다.
1.2 파일 업로드 코드 예
다음은 간단한 파일 업로드 예입니다.
<form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload File" name="submit"> </form>
위 코드에서는 파일 선택 상자와 업로드 버튼이 포함된 양식을 만들었습니다. 파일 업로드를 지원하기 위해 양식의 enctype 속성이 "multipart/form-data"로 설정됩니다. 양식의 action 속성은 파일 업로드를 위한 대상 URL(여기서는 upload.php)을 지정합니다.
서버 측에서는 다음 코드를 사용하여 업로드된 파일을 저장할 수 있습니다.
<?php $targetDir = "uploads/"; $targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; // 检查文件是否已存在 if (file_exists($targetFile)) { echo "Sorry, file already exists."; $uploadOk = 0; } // 检查文件大小 if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // 允许某些文件格式上传 $allowedTypes = array('jpg', 'jpeg', 'png', 'gif'); $fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); if (!in_array($fileType, $allowedTypes)) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // 如果上述检查通过,则保存文件 if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) { echo "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?>
위 코드에서는 먼저 업로드된 파일을 저장할 대상 디렉터리 $targetDir을 정의합니다. 그런 다음 사용자가 업로드한 파일 이름을 얻고 이를 대상 디렉터리와 연결하여 최종 파일 경로 $targetFile을 형성합니다. 대상 파일이 이미 존재하는지 여부, 파일 크기 및 허용되는 파일 형식 등을 확인하는 등 일련의 확인이 코드에서 수행됩니다. 마지막으로 검사가 통과되면 move_uploaded_file 함수를 통해 임시 파일이 대상 경로에 저장됩니다.
2. 파일 다운로드
파일 다운로드는 원격 서버에 있는 파일을 로컬 클라이언트로 보내는 과정을 말합니다. PHP에서는 주로 HTTP 응답 헤더 정보를 설정하고 관련 기능을 사용하여 파일 내용을 클라이언트에 보내는 방식으로 파일 다운로드가 이루어집니다.
2.1 파일 다운로드의 원리
파일 다운로드의 원리는 요청한 파일을 브라우저에서 직접 열지 않고, HTTP 응답 헤더 정보를 설정하여 브라우저가 다운로드 파일로 처리하도록 지시하는 것입니다. 구체적인 단계는 다음과 같습니다.
2.2 파일 다운로드 코드 예
다음은 간단한 파일 다운로드 예입니다.
<?php $filePath = "downloads/file.txt"; $fileName = basename($filePath); // 检查文件是否存在 if (!file_exists($filePath)) { die("File not found."); } // 设置响应头信息 header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename="" . $fileName . """); // 读取文件内容并发送给客户端 readfile($filePath); ?>
위 코드에서는 먼저 $filePath를 다운로드할 파일 경로를 지정한 다음 파일 이름 $fileName을 가져옵니다. 파일이 존재하는지 확인하여 다운로드한 파일이 존재하는지 확인합니다. 그런 다음 Content-Type 및 Content-Disposition 응답 헤더 정보를 설정하여 요청한 파일을 다운로드 파일로 처리하도록 브라우저에 지시합니다. 마지막으로 readfile 함수를 사용하여 파일 콘텐츠를 클라이언트에 전송하여 파일 다운로드를 완료합니다.
결론:
파일 업로드 및 다운로드는 PHP 개발의 일반적인 기능 요구 사항입니다. 파일 업로드 및 다운로드의 원리를 이해하고 관련 기능과 코드 예제를 사용하면 이러한 기능을 빠르게 구현할 수 있습니다. 이 기사가 독자들이 PHP 파일을 업로드 및 다운로드하고 이러한 기술을 더욱 숙달하고 적용하는 데 도움이 되기를 바랍니다.
위 내용은 PHP 연구 노트: 파일 업로드 및 다운로드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!