Have a question?
Message sent Close
View Categories

PHP File Upload

5 min read

With PHP, it is easy to upload files to the server.

PHP-тэй бол сервер рүү файл байршуулах нь хялбар байдаг.

However, with ease comes danger, so always be careful when allowing file uploads!

Гэсэн хэдий ч аюулд амархан орох тул файл байршуулахыг үргэлж болгоомжтой байгаарай!


Configure The “php.ini” File #

First, ensure that PHP is configured to allow file uploads.

Нэгдүгээрт, PHP файл байршуулахыг зөвшөөрсөн байхаар тохируулсан эсэхийг шалгаарай.

In your “php.ini” file, search for the file_uploads directive, and set it to On:

Өөрийн “php.ini” файл дотроос file_uploads удирдамжийг хайж олоод 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:

Дараа нь хэрэглэгчид байршуулахыг хүссэн зургийн файлыг сонгох боломжийг олгох HTML хэлбэрийг үүсгээрэй.

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

Дээрх HTML маягтыг дагаж мөрдөх зарим дүрмүүд:

  • Make sure that the form uses method=”post”

    Маягт нь method = “post” -ийг ашиглаж байгаа эсэхийг шалгаарай.

  • The form also needs the following attribute: enctype=”multipart/form-data”. It specifies which content-type to use when submitting the form

    Маягтанд дараахь шинж чанар хэрэгтэй: enctype = “multipart / form-data”. Энэ нь маягтыг илгээхдээ ямар агуулгын төрлийг ашиглахыг зааж өгдөг

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

    Шошгоны type = “file” шинж чанар нь оролтын талбарыг файл сонгосон удирдлага хэлбэрээр харуулах бөгөөд оролтын хяналтын хажууд “Browse” товчийг байрлуулна.

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

Дээрх хэлбэр нь өгөгдлийг “upload.php” файл руу илгээдэг бөгөөд үүнийг бид дараагийн үүсгэх болно.


 
 
 
 
 
 
 

Create The Upload File PHP Script #

Байршуулах файлын PHP скриптийг үүсгэх #

The “upload.php” file contains the code for uploading a file:

“Upload.php” файл нь файл байршуулах кодыг агуулна.

<?php $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 image if(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; } } ?>

PHP script explained:

PHP скриптийг тайлбарлав:

  • $target_dir = “uploads/” – specifies the directory where the file is going to be placed

    $ target_dir = “байршуулалт /” – файлыг байрлуулах директорыг заана

  • $target_file specifies the path of the file to be uploaded

    $ target_file нь байршуулах файлын замыг зааж өгдөг

  • $uploadOk=1 is not used yet (will be used later)

    $ uploadOk = 1-ийг хараахан ашиглаагүй байна (дараа ашиглах болно)

  • $imageFileType holds the file extension of the file (in lower case)

    $ imageFileType нь файлын өргөтгөлийг агуулдаг (жижиг үсгээр)

  • Next, check if the image file is an actual image or a fake image

    Дараа нь зургийн файл нь бодит зураг эсвэл хуурамч дүрс мөн эсэхийг шалгана уу

Note: You will need to create a new directory called “uploads” in the directory where “upload.php” file resides. The uploaded files will be saved there.

Тэмдэглэл: Та “upload.php” файл байрладаг директорт “uploads” нэртэй шинэ лавлах лавлах хэрэгтэй. Байршуулсан файлууд тэнд хадгалагдах болно.


Check if File Already Exists #

Файл аль хэдийн байгаа эсэхийг шалгана уу #

Now we can add some restrictions.

Одоо бид зарим хязгаарлалтыг нэмж болно.

First, we will check if the file already exists in the “uploads” folder. If it does, an error message is displayed, and $uploadOk is set to 0:

Нэгдүгээрт, бид файлыг “байршуулах” хавтсанд аль хэдийн байгаа эсэхийг шалгах болно. Хэрэв тийм бол алдааны мэдэгдэл гарч ирэх бөгөөд $ uploadOk-ийг 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”.

Дээрх манай HTML хэлбэрт файл оруулах талбарыг “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:

Одоо бид файлын хэмжээг шалгахыг хүсч байна. Хэрэв файл нь 500KB-аас том байвал алдааны мэдэгдэл гарч ирэх бөгөөд $ uploadOk-ийг 0 болгож тохируулна.

// Check file size
if ($_FILES[“fileToUpload”][“size”] > 500000) {
  echo “Sorry, your file is too large.”;
  $uploadOk = 0;
}

Limit File Type #

The code below only allows users to upload JPG, JPEG, PNG, and GIF files. All other file types gives an error message before setting $uploadOk to 0:

Доорх код нь хэрэглэгчид зөвхөн JPG, JPEG, PNG, GIF файлуудыг байршуулах боломжийг олгодог. Бусад бүх файлын төрлүүд $ uploadOk-ийг 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;
}

Complete Upload File PHP Script #

The complete “upload.php” file now looks like this:

Бүрэн “upload.php” файл дараах байдалтай байна:

<?php $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 image if(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 exists if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // Check file size if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 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; } // Check if $uploadOk is set to 0 by an error if ($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 ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?>

Complete PHP Filesystem Reference #

For a complete reference of filesystem functions, go to our complete PHP Filesystem Reference.

Файлын системийн функцийг бүрэн лавлахын тулд манай PHP файлын системийн лавлагаа руу орно уу.

Powered by BetterDocs

Leave a Reply