Latest web development tutorials
×

PHP 코스

PHP 코스 PHP 간략한 소개 PHP 설치 PHP 문법 PHP 변수 PHP echo/print PHP 데이터 유형 PHP 상수 PHP 현 PHP 운영자 PHP If...Else PHP Switch PHP 배열 PHP 배열을 정렬 PHP 자동 전역 PHP While 순환 PHP For 순환 PHP 기능 PHP 매직 변수 PHP 네임 스페이스 PHP 객체 지향

PHP 형태

PHP 형태 PHP 폼 인증 PHP 형태 - 필수 입력 사항 PHP 형태 - 확인 이메일 및 URL PHP 완전한 형태의 인스턴스 PHP $_GET 변수 PHP $_POST 변수

PHP 고급 자습서

PHP 다차원 배열 PHP 날짜 PHP 포함 PHP 파일 PHP 파일 업로드 PHP Cookie PHP Session PHP E-mail PHP 보안 E-mail PHP Error PHP Exception PHP 필터 PHP 고급 필터 PHP JSON

PHP 7 새로운 기능

PHP 7 새로운 기능

PHP 데이터베이스

PHP MySQL 간략한 소개 PHP MySQL 연결 PHP MySQL 데이터베이스 만들기 PHP MySQL 데이터 테이블 만들기 PHP MySQL 데이터를 삽입 PHP MySQL 여러 데이터를 삽입 PHP MySQL 문 준비 PHP MySQL 데이터 읽기 PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX 간략한 소개 AJAX PHP AJAX 데이터베이스 AJAX XML AJAX 실시간 검색 AJAX RSS Reader AJAX 투표

PHP 참조 설명서

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP 이미지 처리 PHP RESTful

PHP 파일 업로드

PHP하여 서버에 파일을 업로드 할 수 있습니다.

테스트 프로젝트에서이 섹션의 예는, 디렉토리 구조 완료 :

test
|-----upload             # 文件上传的目录
|-----form.html          # 表单文件
|-----upload_file.php    # php 上传代码

파일 업로드 폼을 만듭니다

형태가 유용하다에서 사용자가 파일을 업로드 할 수 있습니다.

파일을 업로드하기위한 다음과 같은 HTML 양식을 고려 :

<html>
<head>
<meta charset="utf-8">
<title>本教程(w3big.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 양식에 관한 몇 가지 항목은 다음과 같습니다 :

  • 유형이 사용하는 양식을 제출할 때<양식> 태그에 enctype 속성은내용을 지정합니다. 형식은 파일 내용과 같은 바이너리 데이터를 필요로하는 경우,"다중 / 폼 데이터"를 사용합니다.
  • <입력> 태그 유형 = "파일"속성은입력 파일로 취급되어야한다 지정합니다. 브라우저에서 미리 볼 때 예를 들어, 다음 입력 상자에 참조 찾아보기 버튼이 있습니다.

참고 : 사용자가 파일을 업로드 할 수 있도록 허용하는 것은 큰 보안 위험입니다.단지 신뢰할 수있는 사용자가 파일 업로드을 수행 할 수 있습니다 주시기 바랍니다.


업로드 스크립트를 작성

"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를 사용하면 클라이언트 컴퓨터에서 원격 서버에 파일을 업로드 할 수 있습니다.

첫 번째 매개 변수는 양식 입력 이름이고, 두 번째 첨자는 "이름", "유형", "크기", "tmp_name"또는 "오류"가 될 수 있습니다. 다음과 같습니다 :

  • $ _FILES [ "파일"] [ "이름"] - 업로드 된 파일의 이름
  • $ _FILES [ "파일"] [ "유형"] - 업로드 파일 형식
  • $ _FILES [ "파일"] [ "크기"] - (바이트) 업로드 파일 크기
  • $ _FILES [ "파일"] [ "tmp_name"] - 임시 복사본은 파일 서버의 이름으로 저장된다
  • $ _FILES [ "파일"] [ "오류"] - 오류 코드는 파일 업로드의 결과

이것은 매우 간단한 파일 업로드입니다. 보안 고려 사항을 바탕으로, 당신은 사용자가 파일을 업로드 할 수 있습니다되는 제한을 늘려야합니다.


업로드 제한

이 스크립트에서, 우리는 파일 업로드 제한에 추가했습니다. 사용자는 .gif 참고 업로드 할 수 있습니다, .JPEG는 .JPG는 파일을 .png를, 파일 크기 미만 200 킬로바이트해야합니다 :

<?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 "非法的文件格式";
}
?>

위의 스크립트는 파일이 이미 존재하는지, 그렇지 않은 경우, 파일이의 "업로드"라는 디렉토리에 복사됩니다 넣어 감지합니다.

다음과 같이 데모 파일 업로드 작업은 다음과 같습니다