PHP 12강. 파일 업로드(File Upload)
1. 파일 업로드란?
파일 업로드는 사용자가 선택한 파일을 서버에 저장하는 기능입니다.
예를 들어
이미지
PDF
동영상
엑셀 파일
등을 서버로 전송할 수 있습니다.
2. 업로드 구조
사용자
↓
파일 선택
↓
HTML Form
↓
PHP
↓
upload 폴더
↓
MySQL(파일명 저장)
실제 파일은 서버 폴더에 저장되고,
DB에는 파일명 또는 경로를 저장합니다.
3. HTML Form
파일 업로드를 하려면
반드시
enctype="multipart/form-data"
를 추가해야 합니다.
<form
action="upload.php"
method="post"
enctype="multipart/form-data">
<input
type="file"
name="photo">
<button>
업로드
</button>
</form>
4. PHP에서 파일 받기
PHP는
$_FILES
를 사용합니다.
<?php
print_r($_FILES);
?>
5. 파일 이름
$fileName =
$_FILES["photo"]["name"];
echo $fileName;
예)
golf.jpg
6. 임시 파일
$tmp =
$_FILES["photo"]["tmp_name"];
PHP는 먼저
임시폴더에 저장합니다.
7. move_uploaded_file()
실제 서버에 저장
move_uploaded_file(
$tmp,
"upload/".$fileName
);
8. upload 폴더
프로젝트
project
upload
images
css
index.php
업로드한 파일은
upload 폴더에 저장합니다.
9. 이미지 출력
<img
src="upload/<?php echo $fileName; ?>"
width="300">
10. 파일 크기
$size =
$_FILES["photo"]["size"];
예)
250000
(Byte)
11. 파일 확장자
$ext =
pathinfo(
$fileName,
PATHINFO_EXTENSION
);
결과
jpg
12. 업로드 제한
if(
$ext=="jpg"
||
$ext=="png"
){
echo "업로드 가능";
}
실무에서는 허용된 확장자만 업로드합니다.
13. 파일 크기 제한
if(
$size > 5000000
){
echo "5MB 초과";
}
14. 파일명 변경
중복을 방지하기 위해
$newName =
time()
.
"_"
.
$fileName;
예)
1750000000_golf.jpg
15. 동부산CC 예제
관리자
↓
코스 사진 선택
↓
upload.php
↓
upload 폴더
↓
gallery 테이블
↓
React 출력
16. MySQL 저장
gallery
id
title
image
created_at
DB에는
upload/golf.jpg
같은 경로를 저장합니다.
17. React와 비교
React
<input
type="file"
/>
PHP
$_FILES
React는 선택,
PHP는 저장을 담당합니다.
18. 실무 예제
관리자
↓
배너 등록
↓
파일 업로드
↓
DB 저장
↓
메인페이지 출력
19. 실습 과제
다음 기능을 만들어 보세요.
이미지 선택
업로드
upload 폴더 저장
화면 출력
그리고
동부산CC
코스 이미지를
3장 업로드해 보세요.
20. 정리
파일 업로드는 사용자가 선택한 파일을 서버에 저장하는 기능입니다.
HTML Form에서는 enctype="multipart/form-data"를 반드시 설정해야 하며, PHP에서는 $_FILES를 이용하여 파일 정보를 확인하고 move_uploaded_file()로 서버에 저장합니다.
실무에서는 파일 확장자와 크기를 검사하고, 파일명을 변경하여 중복을 방지하는 것이 일반적입니다.
동부산CC 프로젝트에서는 갤러리, 코스 이미지, 공지사항 이미지, 관리자 배너 등을 이 방식으로 구현할 수 있습니다.
1. 파일 업로드란?
파일 업로드는 사용자가 선택한 파일을 서버에 저장하는 기능입니다.
예를 들어
이미지
동영상
엑셀 파일
등을 서버로 전송할 수 있습니다.
2. 업로드 구조
사용자
↓
파일 선택
↓
HTML Form
↓
PHP
↓
upload 폴더
↓
MySQL(파일명 저장)
실제 파일은 서버 폴더에 저장되고,
DB에는 파일명 또는 경로를 저장합니다.
3. HTML Form
파일 업로드를 하려면
반드시
enctype="multipart/form-data"
를 추가해야 합니다.
<form
action="upload.php"
method="post"
enctype="multipart/form-data">
<input
type="file"
name="photo">
<button>
업로드
</button>
</form>
4. PHP에서 파일 받기
PHP는
$_FILES
를 사용합니다.
<?php
print_r($_FILES);
?>
5. 파일 이름
$fileName =
$_FILES["photo"]["name"];
echo $fileName;
예)
golf.jpg
6. 임시 파일
$tmp =
$_FILES["photo"]["tmp_name"];
PHP는 먼저
임시폴더에 저장합니다.
7. move_uploaded_file()
실제 서버에 저장
move_uploaded_file(
$tmp,
"upload/".$fileName
);
8. upload 폴더
프로젝트
project
upload
images
css
index.php
업로드한 파일은
upload 폴더에 저장합니다.
9. 이미지 출력
<img
src="upload/<?php echo $fileName; ?>"
width="300">
10. 파일 크기
$size =
$_FILES["photo"]["size"];
예)
250000
(Byte)
11. 파일 확장자
$ext =
pathinfo(
$fileName,
PATHINFO_EXTENSION
);
결과
jpg
12. 업로드 제한
if(
$ext=="jpg"
||
$ext=="png"
){
echo "업로드 가능";
}
실무에서는 허용된 확장자만 업로드합니다.
13. 파일 크기 제한
if(
$size > 5000000
){
echo "5MB 초과";
}
14. 파일명 변경
중복을 방지하기 위해
$newName =
time()
.
"_"
.
$fileName;
예)
1750000000_golf.jpg
15. 동부산CC 예제
관리자
↓
코스 사진 선택
↓
upload.php
↓
upload 폴더
↓
gallery 테이블
↓
React 출력
16. MySQL 저장
gallery
id
title
image
created_at
DB에는
upload/golf.jpg
같은 경로를 저장합니다.
17. React와 비교
React
<input
type="file"
/>
PHP
$_FILES
React는 선택,
PHP는 저장을 담당합니다.
18. 실무 예제
관리자
↓
배너 등록
↓
파일 업로드
↓
DB 저장
↓
메인페이지 출력
19. 실습 과제
다음 기능을 만들어 보세요.
이미지 선택
업로드
upload 폴더 저장
화면 출력
그리고
동부산CC
코스 이미지를
3장 업로드해 보세요.
20. 정리
파일 업로드는 사용자가 선택한 파일을 서버에 저장하는 기능입니다.
HTML Form에서는 enctype="multipart/form-data"를 반드시 설정해야 하며, PHP에서는 $_FILES를 이용하여 파일 정보를 확인하고 move_uploaded_file()로 서버에 저장합니다.
실무에서는 파일 확장자와 크기를 검사하고, 파일명을 변경하여 중복을 방지하는 것이 일반적입니다.
동부산CC 프로젝트에서는 갤러리, 코스 이미지, 공지사항 이미지, 관리자 배너 등을 이 방식으로 구현할 수 있습니다.
#PHP 12강. 파일 업로드(File Upload)