PHP fayl yuklash (file upload)
PHP yordamida fayllarni serverga yuklash oson.
Biroq, xavf osonlik bilan keladi, shuning uchun fayllarni yuklashga ruxsat berishda doimo ehtiyot bo‘ling!
"php.ini" faylini sozlang
Birinchidan, PHP fayl yuklanishiga ruxsat berish uchun sozlanganligiga ishonch hosil qiling.
"php.ini" faylingizda file_uploads direktivasini qidiring va uni Yoqilgan qilib o‘rnating:
file_uploads = On
HTML formasini yarating
Keyin, foydalanuvchilarga yuklamoqchi bo‘lgan rasm faylini tanlash imkonini beruvchi HTML formasini yarating:
<!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>
Yuqoridagi HTML formasi uchun amal qilish kerak bo‘lgan ba’zi qoidalar:
- Shakl metod = "post" dan foydalanganligiga ishonch hosil qiling
- Shakl shuningdek quyidagi atributga muhtoj: enctype="multipart/form-data". Shaklni yuborishda qaysi kontent turidan foydalanishni belgilaydi
Yuqoridagi talablarsiz faylni yuklash ishlamaydi.
E’tibor berish kerak bo‘lgan boshqa narsalar:
- <input> tegining type="file" atributi kiritish maydonini fayl tanlash boshqaruvi sifatida ko‘rsatadi, kiritish boshqaruvi yonidagi "Browse" tugmasi.
Yuqoridagi forma ma’lumotlarni "upload.php" deb nomlangan faylga yuboradi, biz uni keyingi yaratamiz.
Yuklash faylini PHP skriptini yarating
"upload.php" faylida faylni yuklash uchun kod mavjud:
<?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 skripti tushuntirildi:
- $target_dir = "uploads/" - fayl joylashtiriladigan katalogni belgilaydi
- $target_file yuklanadigan faylning yo‘lini belgilaydi
- $uploadOk=1 hali ishlatilmagan (keyinroq foydalaniladi)
- $imageFileType fayl kengaytmasiga ega (kichik harflarda)
- Keyinchalik, rasm fayli haqiqiy tasvir yoki soxta tasvir ekanligini tekshiring
Fayl allaqachon mavjudligini tekshiring
Endi biz ba’zi cheklovlarni qo‘shishimiz mumkin.
Birinchidan, fayl allaqachon "yuklashlar" jildida mavjudligini tekshiramiz. Agar shunday bo‘lsa, xato xabari ko‘rsatiladi va $uploadOk 0 ga o‘rnatiladi:
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
Fayl hajmini cheklash
Yuqoridagi HTML formamizdagi fayl kiritish maydoni "fileToUpload" deb nomlanadi.
Endi biz fayl hajmini tekshirmoqchimiz. Agar fayl 500 KB dan katta bo‘lsa, xato xabari ko‘rsatiladi va $uploadOk 0 ga o‘rnatiladi:
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
Fayl turini cheklash
Quyidagi kod foydalanuvchilarga faqat JPG, JPEG, PNG va GIF fayllarni yuklash imkonini beradi. Boshqa barcha fayl turlari $uploadOk ni 0 ga sozlashdan oldin xato xabari beradi:
// 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;
}
PHP skriptini yuklash faylini tugallang
To‘liq "upload.php" fayli endi quyidagicha ko‘rinadi:
<?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.";
}
}
?>
To‘liq PHP fayl tizimi ma’lumotnomasi
Fayl tizimi funksiyalari haqida to‘liq ma’lumot olish uchun bizning to‘liq PHP fayl tizimi ma’lumotnomamizga o‘ting.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
