PHP / 파일 업로드 만드는 방법
PHP로 파일 업로드 기능을 구현해보겠습니다.
다음은 파일을 업로드하기 위한 간단한 HTML 문서입니다.
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> </head> <body> <form action="" method="POST" enctype="multipart/form-data"> <p><input type="file" name="myfile"></p> <p><input type="submit" name="action" value="Upload"></p> </form> </body> </html>
파일을 업로드하면 $_FILES 변수에 배열로 name, type, size, tmp_name, error 정보가 전달됩니다. 아래는 123.png 파일을 업로드했을 때 각 정보를 출력한 것입니다.
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> </head> <body> <?php if ( $_POST[ 'action' ] == "Upload" ) { print_r( $_FILES[ 'myfile' ] ); echo "<br>"; echo $_FILES[ 'myfile' ][ 'name' ]; echo "<br>"; echo $_FILES[ 'myfile' ][ 'type' ]; echo "<br>"; echo $_FILES[ 'myfile' ][ 'size' ]; echo "<br>"; echo $_FILES[ 'myfile' ][ 'tmp_name' ]; echo "<br>"; echo $_FILES[ 'myfile' ][ 'error' ]; } ?> <form action="" method="POST" enctype="multipart/form-data"> <p><input type="file" name="myfile"></p> <p><input type="submit" name="action" value="Upload"></p> </form> </body> </html>
업로드한 파일은 PHP 설정에 있는 tmp 폴더에 임의의 이름으로 저장되고, 사용이 끝나면 삭제됩니다. 이 파일을 내가 원하는 폴더로 이동해야 하는데, 이때 사용하는 함수는 move_uploaded_file()입니다.
move_uploaded_file(string $from, string $to)
아래는 업로드한 파일을 원본 이름 그대로 uploads 폴더로 이동시킵니다.
<!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> </head> <body> <?php if ( $_POST[ "action" ] == "Upload" ) { $uploaded_file_name_tmp = $_FILES[ 'myfile' ][ 'tmp_name' ]; $uploaded_file_name = $_FILES[ 'myfile' ][ 'name' ]; $upload_folder = "uploads/"; move_uploaded_file( $uploaded_file_name_tmp, $upload_folder . $uploaded_file_name ); echo "<p>" . $uploaded_file_name . "을(를) 업로드하였습니다.</p>"; } ?> <form action="" method="POST" enctype="multipart/form-data"> <p><input type="file" name="myfile"></p> <p><input type="submit" name="action" value="Upload"></p> </form> </body> </html>