Home
Main Page

PHP Basic
Introduction
Syntax
Variables
Operators
If...Else
Switch
Arrays
Looping
Functions
Forms
GET
POST

PHP Advanced
Date
Include
File
File Upload
Cookies
Sessions
Mail
Secure Mail

MySQL Database
Introduction
Connect
Create
Insert
Select
Where
Order By
Update
Delete

PHP Database
ODBC

PHP Reference
PHP Manual

PHP File Upload



การสร้างแบบฟอร์มส่งไฟล์

เราจะสร้างแบบฟอร์ม HTML ง่ายๆ ตามนี้:
<html>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"> 
<br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
จากแบบฟอร์ม HTML ข้างบนนี้อธิบายได้ว่า:

  • แท็ก form ต้องใส่ enctype = "multipart/form-data" เพื่ออัพโหลดข้อมูลเป็นแบบไบนารี่ (binary)
  • แท็ก input ต้องเลือก type = "file" เพราะจะมีปุ่มให้ browse file ได้
    Note: การปล่อยให้ใครก็ตามสามารถอัพโหลดไฟล์ได้เป็นความเสี่ยงในด้านความปลอดภัยอย่างมาก ดังนั้นควรอนุญาติให้คนที่ไว้ใจได้เท่านั้นทำการอัพโหลดไฟล์

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

    ไฟล์ชื่อ upload_file.php เขียนสคริปต์เพื่ออัพโหลดไฟล์ตามนี้:
    <?php
    if ($_FILES["file"]["error"] > 0)
      {
      echo "Error: " . $_FILES["file"]["error"] . "<br>";
      }
    else
      {
      echo "Upload: " . $_FILES["file"]["name"] . "<br>";
      echo "Type: " . $_FILES["file"]["type"] . "<br>";
      echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br>";
      echo "Stored in: " . $_FILES["file"]["tmp_name"];
      }
    ?>
    ใช้ $_FILES array แยกแยะค่าพารามิเตอร์ต่างๆ ของไฟล์ ดังนี้:

  • $_FILES["file"]["name"] - ชื่อของไฟล์
  • $_FILES["file"]["type"] - ชนิดของไฟล์ เช่น image/gif
  • $_FILES["file"]["size"] - ขนาดเป็นไบต์ (bytes) ของไฟล์
  • $_FILES["file"]["tmp_name"] - ไฟล์ชั่วคราวเพื่อรอไปเก็บไว้บนเซิร์ปเวอร์
  • $_FILES["file"]["error"] - โค้ดแสดงข้อผิดพลาดจากไฟล์ที่อัพโหลด
    นี่เป็นแค่การแสดงข้อมูลไฟล์ที่อัพโหลดเท่านั้น เพื่อเพิ่มความปลอดภัยแก่เซิร์ปเวอร์ คุณต้องเพิ่มเงื่อนไขเข้าไปอีก

    ข้อจำกัดในการอัพโหลด

    ในสคริปต์นี้ เราจะจำกัดผู้ใช้ให้อัพโหลดได้เฉพาะไฟล์รูปภาพ .gif กับ .jpeg เท่านั้น และขนาดไฟล์ต้องไม่เกิน 20 kb ด้วย:

    <?php
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 20000))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br>";
        echo "Stored in: " . $_FILES["file"]["tmp_name"];
        }
      }
    else
      {
      echo "Invalid file";
      }
    ?>

    การเซฟไฟล์

    จากสคริปต์ข้างบน ไฟล์ได้ถูกส่งไปเก็บไว้ที่โฟลเดอร์ชั่วคราวบนเซิร์ปเวอร์แล้ว

    แต่ไฟล์ชั่วคราวนั้นจะถูกลบทิ้งหลังจากสคริปต์สิ้นสุด ดังนั้นเราต้องก็อปปี้ไฟล์ชั่วคราวนั้นไปเก็บไว้ที่เราต้องการ

    <?php
    if (($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/pjpeg")
    && ($_FILES["file"]["size"] < 20000))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br>";
        echo "Type: " . $_FILES["file"]["type"] . "<br>";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br>";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
        if (file_exists("upload/" , $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "upload/" , $_FILES["file"]["name"]);
          echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
          }
        }
      }
    else
      {
      echo "Invalid file";
      }
    ?>
    สคริปต์ข้างบนจะตรวจสอบว่ามีไฟล์ชื่อนี้อยู่แล้วหรือไม่ ด้วยฟังก์ชั่น file_exists() ถ้าไฟล์ชื่อนี้ไม่มีอยู่ก็จะก็อปปี้ไฟล์ ไปไว้โฟลเดอร์ที่ระบุในที่นี้คือโฟลเดอร์ชื่อ "Upload/" ด้วยฟังก์ชั่น move_uploaded_file()

    คุณสามารถตั้งชื่อไฟล์ได้เอง โดยการเปลี่ยน "upload/" , $_FILES["file"]["name"] ในฟังก์ชั่น move_uploaded_file() ไปเป็น "upload/ชื่อไฟล์พร้อมนามสกุล"



    Related Sites
    php.net
    mysql
    phpMyAdmin
    apache
    thainuke
    microsoft
    linux
    PostgreSQL
    Zend Technologies
    CentOS

    Special Thanks
    ohohost.com
    w3schools.com

    Advertise




    Power By



     
    3043440







    Copyright 2006 by Phpstreet. All Rights Reserved.