Friday, May 11, 2018

PHP 5 File Upload

Với PHP, thật dễ dàng để tải các tệp lên máy chủ.

Tuy nhiên, dễ dàng gặp nguy hiểm, bởi vậy hãy luôn cẩn thận khi cho phép tải lên tệp!

Định cấu hình tệp "php.ini"

trước nhất, hãy bảo đảm rằng trước khi học PHP được định cấu hình để cho phép tải lên tệp.

Trong tệp "php.ini" của bạn, kiếm chỉ thị file_uploads và đặt thành On:
file_uploads = On

Create The HTML Form

Next, create an HTML form that allow users to choose the image file they want to upload:

<!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>

Some rules to follow for the HTML form above:

  • Make sure that the form uses method="post"
  • The form also needs the following attribute: enctype="multipart/form-data". It specifies which content-type to use when submitting the for

Without the requirements above, the file upload will not work.

Other things to notice:

  • The type="file" attribute of the tag shows the input field as a file-select control, with a "Browse" button next to the input control

The form above sends data to a file called "upload.php", which we will create next.

Tạo tập tin tải lên PHP Script

Tệp "upload.php" chứa mã để tải lên tệp:

 

$target_dir = "uploads/";

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

$uploadOk = 1;

$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake imageif(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;

   

?>

Tập lệnh PHP đã giảng giải:

$ target_dir = "uploads /" - chỉ định thư mục nơi tệp sẽ được đặt

$ target_file chỉ định đường dẫn của tệp được tải lên

$ uploadOk = 1 chưa được dùng (sẽ được sử dụng sau)

$ imageFileType giữ phần mở mang của tệp (trong trường hợp thấp hơn)

Tiếp theo, rà soát xem tệp hình ảnh có phải là hình ảnh thực hay hình ảnh giả

rà soát xem Tệp đã tồn tại chưa
hiện nay chúng ta có thể thêm một số hạn chế.

trước tiên, chúng tôi sẽ thẩm tra xem tệp đã tồn tại trong thư mục "tải lên" chưa. Nếu có, thông báo lỗi được hiển thị và $ uploadOk được đặt thành 0:

// Check if file already exists

if (file_exists($target_file))

    echo "Sorry, file already exists.";

    $uploadOk = 0;



Limit File Size

The file input field in our HTML form above is named "fileToUpload".

Now, we want to check the size of the file. If the file is larger than 500KB, an error message is displayed, and $uploadOk is set to 0:

// Check file size

if ($_FILES["fileToUpload"]["size"] > 500000)

    echo "Sorry, your file is too large.";

    $uploadOk = 0;

Loại tệp giới hạn
Mã bên dưới chỉ cho phép người dùng tải lên các tệp JPG, JPEG, PNG và GIF. vớ các loại tệp khác cung cấp thông tin lỗi trước khi đặt $ uploadOk thành 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;


hoàn tất tập tin tải lên PHP Script
Tệp "upload.php" hoàn chỉnh bây chừ trông giống như sau:


$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake imageif(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 existsif (file_exists($target_file))
    echo "Sorry, file already exists.";
    $uploadOk = 0;

// Check file sizeif ($_FILES["fileToUpload"]["size"] > 500000)
    echo "Sorry, your file is too large.";
    $uploadOk = 0;

// Allow certain file formatsif($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 errorif ($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.";
   

?>

No comments:

Post a Comment