반응형
[PHP] 파일 업로드
php 파일 업로드 기능에 대해서 포스팅 해보고자 합니다.
본 문서는 w3c school에 있는 파일업로드를 참고하여 작성한 문서입니다.
https://www.w3schools.com/php/php_file_upload.asp
전체 코드를 먼저 보시고 하나하나 설명을 하려 합니다.
전체 코드
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
$uploadOk = 0;
$uploadOk가 0 되면 문제가 있는 것으로 간주하여 업로드를 막는다.
크게 3가지를 검사한다.
1.파일 존재 유무
2.파일 크게 제한
3.파일 형식 제한
위의 3개 모두를 충족시키지 않으면 업로드를 할 수 없게 된다.
1.파일 존재 유무 - 같은 파일이 있나 확인
file_exists() 함수를 통하여 해당 위치에 같은 이름의 파일이 있는지 확인한다.
2.파일 크게 제한 - 크기 확인
업로드 할 파일의 사이즈가 0.5MB보다 큰지 확인한다.
여기서의 숫자는 1당 1bit가 되며 1000당 단위가 증가 한다. 0.5MB == 500kb이다.
3.파일 형식 제한 - 확장자 확인
확장자를 확인하여 업로드 가능한 파일인지 확인한다.
확장자에는 zip, pdf, hwp, xlxs, ppt, pptx, apk, png, jpg, gif 등 다양한 확장자명이 존재하며 일일이 설정해 줘야 한다.
파일 업로드
move_uploaded_file() 함수를 통하여 업로드할 파일을 경로에 업로드 한다.
이전에 file 전송하기에 보면 ftp권한 설정을 해야지 업로드가 가능한데. 업로드 하기 전에 꼭 확인하기 바란다.
2021.07.05 - [웹언어/PHP] - [PHP] file 전송하기
반응형
'웹언어 > PHP' 카테고리의 다른 글
[PHP]닷홈 호스팅 phpMyAdmin 접속하기 (2) | 2022.02.25 |
---|---|
[PHP]닷홈 호스팅 DB연결하기 (2) | 2022.02.18 |
[PHP] file 전송하기 (4) | 2021.07.05 |
[PHP] 문서불러오기 (13) | 2021.05.25 |
[PHP] $_POST, $_GET 데이터 받기 (6) | 2021.05.23 |