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 Superglobals PHP While การไหลเวียน PHP For การไหลเวียน PHP ฟังก์ชัน PHP ตัวแปรเมจิก PHP namespaces 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 ค้นหาแบบ Real-time 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 ข้างต้นอยู่ด้านล่าง:

  • <form> แอตทริบิวต์แท็ก enctypeระบุเนื้อหาเมื่อกรอกแบบฟอร์มชนิดที่ใช้ เมื่อรูปแบบต้องใช้ข้อมูลไบนารีเช่นเนื้อหาไฟล์ใช้"multipart / form ข้อมูล"
  • <input> tag type = "File"แอตทริบิวต์ระบุการป้อนข้อมูลที่ควรจะถือว่าเป็นไฟล์ ตัวอย่างเช่นเมื่อคุณแสดงตัวอย่างในเบราว์เซอร์ที่คุณจะเห็นติดกับกล่องใส่มีปุ่ม Browse

หมายเหตุ: อนุญาตให้ผู้ใช้สามารถอัปโหลดไฟล์เป็นความเสี่ยงค่อนข้างมากกรุณาเพียง แต่ช่วยให้ผู้ใช้งานที่เชื่อถือได้ในการดำเนินการอัปโหลดไฟล์


สร้างสคริปต์อัปโหลด

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

สคริปต์ข้างต้นตรวจพบว่าไฟล์ที่มีอยู่แล้วถ้าไม่ใส่ไฟล์จะถูกคัดลอกไปยังไดเรกทอรีที่เรียกว่า "อัปโหลด" ของ

การสาธิตการดำเนินการอัปโหลดไฟล์จะเป็นดังนี้: