با عرض سلام خدمت کاربران محترم سایت پی وی لرن. در این جلسه قصد داریم تا به مبحث آپلود فایل در php بپردازیم.
آپلود فایل ها در php کار آسانی هست اما دلیل نمیشود که این کار بی خطر باشد. بنابراین همیشه هنگام ارسال فایل ها مراقب باشید.
ابتدا مطمئن شوید که php برای اجازه به آپلود فایل ها پیکربندی (configure) شده باشد.
در فایل “php.ini” به دنبال دستور العمل file_uploads بگردید و مقدار آن را به On تغییر دهید:
1 | file_uploads = On |
در قدم بعدی فرمی می سازیم که به کاربران این اجازه را میدهد تا عکس دلخواه شان را انتخاب کنند:
1 2 3 4 5 6 7 8 9 10 11 12 | <!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> |
برخی قوانین برای فرم بالا به شرح زیر می باشند:
بدون شرایط بالا فرم به درستی کار نخواهد کرد.
همچنین ویژگی “type = “file تگ <input> نشان می دهد که فیلد ورودی ما از نوع file-select می باشد. (با دکمه “Browse”)
فرم بالا اطلاعات را به فایل “upload.php” ارسال می کند.
فایل “upload.php” شامل کد زیر برای آپلود فایل می باشد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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; } } ?> |
توضیحات اسکریپت بالا به صورت زیر می باشد:
نکته: یک دایرکتوری جدید در محل فایل “upload.php” ایجاد کنید. فایل های آپلود شده در آنجا ذخیره خواهند شد.
حال می توانیم کمی محدودیت به برنامه اضافه کنیم.
ابتدا بررسی می کنیم که فایل آپلود شده داخل دایکتوری “uploads” وجود دارد یا نه.
اگر وجود داشت که یک پیام خطا را نمایش می دهیم و مقدار uploadOK$ را به ۰ تغییر می دهیم:
1 2 3 4 | if (file_exists($target_file)) { echo "در حال حاضر فایل وجود دارد."; $uploadOk = 0; } |
نام فیلد ورودی فرم HTML بالا “fileToUpload” نام دارد.
حال می خواهیم که اندازه فایل را بررسی کنیم. اگر اندازه فایل از ۵۰۰KB بیشتر بود، یک پیغام خطا را نمایش می دهیم مقدار uploadOK$ را به ۰ تغییر می دهیم:
1 2 3 4 | if ($_FILES["fileToUpload"]["size"] > 500000) { echo "فایل شما بیش از حد بزرگ است."; $uploadOk = 0; } |
کد زیر به کاربر این اجازه را می دهد که فقط فایل های JPG, JPEG, PNG و GIF را آپلود کند. تمام فایل هایی از نوع دیگر یک پسغام خطا به کاربر نشان داده و مقدار uploadOK$ را به ۰ تغییر می دهد:
1 2 3 4 5 | if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?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 "فایل در حال حاضر وجود دارد."; $uploadOk = 0; } // Check file size if ($_FILES["fileToUpload"]["size"] > 500000) { echo "فایل بیش از حد بزرگ است."; $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 "فایل شما آپلود نشده است."; // 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 "اشکالی در آپلود فایل وجود دارد."; } } ?> |
جلسه آموزش آپلود فایل در php نیز به پایان رسید.
جلسه بعد به مبحث کوکی ها (Cookies) در php خواهیم پرداخت. با پی وی لرن همراه باشید.
mohamadtabatabaei164@gmail.com
سلام من از این فایل استفاده کردم ولی پیغام خطای زیر را مشاهده میکنم باید چکارکنم
Notice: Undefined index: fileToUpload in C:\xampp\htdocs\test-0508 – Copy\upload.php on line 3
Notice: Trying to access array offset on value of type null in C:\xampp\htdocs\test-0508 – Copy\upload.php on line 3