PHP로, 서버에 파일을 업로드하기 쉽습니다.
쉽게 위험을 제공하여 파일 업로드를 허용 그러나, 그래서 항상 조심!
구성 "php.ini" 파일을
첫째, PHP는 파일 업로드를 허용하도록 구성되어 있는지 확인합니다.
당신의에서 "php.ini" 파일의의 file_uploads 지시어를 검색하고, ON으로 설정 :
file_uploads = On
HTML 양식 만들기
다음으로, 사용자가 업로드 할 이미지 파일을 선택할 수있는 HTML 양식을 만들 :
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
Select
image to upload:
<input type="file" name="fileToUpload"
id="fileToUpload">
<input
type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
일부 규칙은 위의 HTML 양식에 대해 다음과 같이하십시오
- 양식 방법을 사용하는지 확인 = "POST"
- 이 양식은 또한 필요 following = "다중 / 폼 데이터"에 enctype : 속성을. 이 양식을 제출 할 때 사용할 내용 유형을 지정합니다
위의 요구 사항이 없으면, 파일 업로드가 작동하지 않습니다.
다른 가지주의 사항 :
- type="file" 의 속성 <input> 태그는 함께 파일 선택 제어와 입력 필드를 나타낸다 "Browse" 버튼 입력 제어 옆
양식 위라는 파일에 데이터를 전송 "upload.php" 우리가 다음이 생성됩니다.
업로드 파일 PHP 스크립트 만들기
"upload.php" 파일은 파일을 업로드하기위한 코드를 포함 :
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
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;
}
}
?>
PHP 스크립트 설명 :
- $ TARGET_DIR = "uploads/" - 파일이 위치 할 것입니다 디렉토리를 지정합니다
- $의 TARGET_FILE 파일의 경로를 업로드 할 수 지정
- $ uploadOk = 1 아직 사용되지 않는다 (will be used later)
- $ imageFileType 파일의 파일 확장자를 보유하고
- 이미지 파일은 실제 이미지 또는 가짜 이미지 인 경우 다음 확인
참고 :라는 새로운 디렉토리를 작성해야합니다 "uploads" 디렉토리에 "upload.php" 파일이 존재합니다. 업로드 된 파일이 저장됩니다.
파일이 이미 존재하는 경우 확인
이제 우리는 몇 가지 제한 사항을 추가 할 수 있습니다.
파일이 이미 존재하는 경우 첫째, 우리는 확인합니다 "uploads" 폴더에 있습니다. 가 설치되어있는 경우, 오류 메시지가 표시되며, $ uploadOk은 0으로 설정됩니다 :
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
제한 파일 크기
위의 HTML 형식의 파일 입력 필드의 이름은 "fileToUpload" .
이제, 우리는 파일의 크기를 확인하고 싶습니다. 파일이 500킬로바이트보다 큰 경우, 오류 메시지가 표시되며, $ uploadOk은 0으로 설정됩니다 :
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
제한 파일 형식
단지 아래 코드는 사용자가 JPG, JPEG, PNG 및 GIF 파일을 업로드 할 수 있습니다. 다른 모든 파일 형식은 0 $ uploadOk를 설정하기 전에 오류 메시지를 제공합니다 :
// 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;
}
전체 파일 업로드 PHP 스크립트
전체 "upload.php" 파일은 이제 다음과 같습니다 :
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
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 ". basename( $_FILES["fileToUpload"]["name"]). " has been
uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
PHP 파일 시스템 참조를 완료
파일 시스템 기능의 완전한 참고로, 우리의 완전한 이동 PHP 파일 시스템 참조 .