English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

php 파일 업로드 기능을 쉽게 구현

PHP 파일 업로드

PHP를 통해 파일을 서버에 업로드할 수 있습니다.

이 장의 예제는 test 프로젝트 아래 완료되었습니다. 디렉토리 구조는 다음과 같습니다:

테스트
|-----upload             # 파일 업로드의 디렉토리
|-----form.html          # 양식 파일
|-----upload_file.php    # php 업로드 코드

소스 코드 다운로드:파일 업로드

파일 업로드 폼 생성
사용자가 폼에서 파일을 업로드하는 것은 매우 유용합니다.
아래는 업로드 파일을 위한 HTML 폼입니다:

<html>
<head>
<meta charset="utf-8">
<title>쿄아 튜토리얼(runoob.com)</title>
</head>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
 <label for="file">파일 이름:</label>
 <input type="file" name="file" id="file"><br>
 <input type="submit" name="submit" value="제출">
</form>
</body>
</html>

위 코드를 form.html 파일에 저장하세요。
위의 HTML 폼에 대한 몇 가지 주의사항을 나열합니다:

1.<form> 태그의 enctype 속성은 폼을 제출할 때 사용할 내용 유형을 지정합니다. 폼이 이진 데이터를 필요로 할 때, 예를 들어 파일 내용을 경우, "multipart"를 사용하세요./form-data"。
2.<input> 태그의 type="file" 속성은 입력을 파일로 처리해야 할지 지정합니다. 예를 들어, 브라우저에서 미리 보기할 때 입력 박스 옆에 탐색 버튼이 보입니다.
주의사항:사용자가 파일을 업로드하는 것은 큰 보안 위험이 있습니다. 신뢰할 수 있는 사용자만 파일 업로드 작업을 수행하도록 하세요.

업로드 스크립트 생성
"upload_file.php" 파일은 업로드 파일을 위한 코드를 포함하고 있습니다:

<?php
if ($_FILES["file"]["error"] > 0)
{
 echo "오류:" . $_FILES["file"]["error"] . "<br>";
}
else
{
 echo "업로드 파일 이름: " . $_FILES["file"]["name"] . "<br>";
 echo "파일 타입: " . $_FILES["file"]["type"] . "<br>";
 echo "파일 크기: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
 echo "파일 일시적인 저장 위치: " . $_FILES["file"]["tmp_name"];
}
?>

PHP의 전역 배열 $_FILES를 사용하여 클라이언트 컴퓨터에서 원격 서버로 파일을 업로드할 수 있습니다.
첫 번째 매개변수는 폼의 input name입니다. 두 번째 인덱스는 "name", "type", "size", "tmp_name", 또는 "error" 중 하나일 수 있습니다. 다음과 같이 보입니다:
$_FILES["file"]["name"] - 업로드 파일의 이름
$_FILES["file"]["type"] - 업로드 파일의 타입
$_FILES["file"]["size"] - 파일 크기, 바이트 단위로 계산됩니다
$_FILES["file"]["tmp_name"] - 서버에 저장된 파일의 일시적인 복사본 이름
$_FILES["file"]["error"] - 파일 업로드로 인한 오류 코드

이는 매우 간단한 파일 업로드 방법입니다. 보안을 고려하여, 누가 파일을 업로드할 수 있는지에 대한 제한을 추가해야 합니다.

업로드 제한
이 스크립트에서는 파일 업로드 제한을 추가했습니다. 사용자는 .gif, .jpeg, .jpg, .png 파일만 업로드할 수 있으며, 파일 크기는 200 kB:

<?php
// 업로드 가능한 이미지 확장자
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);  // 파일 확장자 이름 가져오기
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800) // 하나도 200 kb
&& in_array($extension, $allowedExts))
{
 if ($_FILES["file"]["error"] > 0)
 {
 echo "에러: " . $_FILES["file"]["error"] . "<br>";
 }
 else
 {
 echo "업로드 파일 이름: " . $_FILES["file"]["name"] . "<br>";
 echo "파일 타입: " . $_FILES["file"]["type"] . "<br>";
 echo "파일 크기: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
 echo "파일 일시적인 저장 위치: " . $_FILES["file"]["tmp_name"];
 }
}
else
{
 echo "불법적인 파일 형식";
}
?>

업로드된 파일 저장
위의 예제는 서버의 PHP 일시적인 폴더에서 업로드된 파일의 일시적인 복사본을 생성합니다.
이 가상의 복사본 파일은 스크립트 종료 시 사라집니다. 업로드된 파일을 저장하려면 다른 위치로 복사해야 합니다:

<?php
// 업로드 가능한 이미지 확장자
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp);  // 파일 확장자 이름 가져오기
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800) // 하나도 200 kb
&& in_array($extension, $allowedExts))
{
 if ($_FILES["file"]["error"] > 0)
 {
 echo "에러: " . $_FILES["file"]["error"] . "<br>";
 }
 else
 {
 echo "업로드 파일 이름: " . $_FILES["file"]["name"] . "<br>";
 echo "파일 타입: " . $_FILES["file"]["type"] . "<br>";
 echo "파일 크기: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
 echo "파일 일시 저장 위치: " . $_FILES["file"]["tmp_name"] . "<br>";
 // 현재 디렉토리에 있는 upload 디렉토리에 파일이 존재하는지 확인합니다
 // upload 디렉토리가 없으면, 그를 생성해야 합니다. upload 디렉토리 권한은 777
 if (file_exists("upload/" . $_FILES["file"]["name"]))
 {
 echo $_FILES["file"]["name"] . " 파일이 이미 존재합니다。 ";
 }
 else
 {
 // upload 디렉토리에 파일이 존재하지 않으면 파일을 upload 디렉토리에 업로드합니다
 move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
 echo "파일 저장 위치: " . "upload/" . $_FILES["file"]["name"];
 }
 }
}
else
{
 echo "불법적인 파일 형식";
}
?>

위 스크립트는 파일이 존재하는지 확인한 후, 존재하지 않으면 "upload" 디렉토리에 파일을 복사합니다。
파일 업로드 시연 작업은 다음과 같습니다:

이것이 이 문서의 전체 내용입니다. 많은 도움이 되길 바라며, 많은 지원을 부탁드립니다. 노래教程을 많이 지원해 주세요.

언급: 이 문서의 내용은 인터넷에서 가져왔으며, 원저자가 모두 소유하고 있으며, 인터넷 사용자가 자발적으로 기여하고 자체로 업로드한 내용입니다. 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를 하지 않았으며, 관련 법적 책임을 지지 않습니다. 저작권 문제가 있는 내용을 발견하면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(보내는 이메일에서 #을 @으로 변경하십시오. 신고하고 관련 증거를 제공하시면, 실제로 확인되면, 이 사이트는 즉시 위법 내용을 삭제합니다。)

추천해드립니다