[php] PHP를 사용한 파일 업로드와 파일 업로드 스트림

파일 업로드는 웹 애플리케이션에서 자주 사용되는 기능입니다. PHP를 사용하여 파일을 업로드하고 저장하는 방법에 대해 알아보겠습니다. 또한, 파일 업로드를 스트림을 통해 직접 서버로 전송하는 방법에 대해서도 살펴보겠습니다.

파일 업로드

PHP에서 파일을 업로드하기 위해서는 HTML 폼과 PHP 스크립트가 필요합니다.

HTML 폼

먼저, 파일을 업로드하기 위한 HTML 폼을 작성해야 합니다.

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

위의 코드에서 name 속성이 file인 input 태그를 사용하여 파일을 선택할 수 있는 파일 선택 버튼을 만들었습니다. enctype="multipart/form-data"는 파일을 전송할 때 사용되는 인코딩 방식을 지정합니다.

PHP 스크립트

이제, 파일을 실제로 서버에 업로드하고 저장하는 PHP 스크립트를 작성해야 합니다.

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $file = $_FILES['file'];
    $targetDirectory = "uploads/";
    $targetFile = $targetDirectory . basename($file['name']);
    move_uploaded_file($file['tmp_name'], $targetFile);
    echo "File uploaded successfully";
} else {
    echo "Invalid request";
}

위의 PHP 코드는 파일이 포함된 HTTP POST 요청을 처리하고, 업로드된 파일을 지정된 디렉토리로 이동시킵니다.

파일 업로드 스트림

파일 업로드 스트림을 사용하면 클라이언트에서 서버로 직접 파일을 전송할 수 있습니다. 이를 통해 파일을 먼저 서버로 업로드하고, 그 후에 PHP 스크립트로 전달하지 않고, PHP 스크립트 내에서 직접 파일을 처리할 수 있습니다.

예시 코드

<?php
$in = fopen("example.txt", "rb");
$out = fopen("https://example.com/upload.php", "wb");
stream_copy_to_stream($in, $out);
fclose($in);
fclose($out);

위의 예시 코드는 stream_copy_to_stream 함수를 사용하여 클라이언트에서 서버로 파일을 전송합니다.

파일 업로드와 파일 업로드 스트림을 다룬 예제를 통해 PHP를 사용하여 파일을 처리하는 방법에 대해 살펴보았습니다.

참고 자료