File Upload

در PHP می‌تونیم اجازه بدیم کاربرها فایل‌هایی مثل عکس، PDF یا متن رو آپلود کنن.
این کار با استفاده از فرم HTML و پردازش سمت سرور با PHP انجام میشه.

🔹 ساخت فرم آپلود فایل

برای آپلود باید فرم HTML ویژگی‌های زیر رو داشته باشه:

  • متد: POST

  • نوع انکودینگ: multipart/form-data

  • یک فیلد ورودی نوع file

مثال (form.html):

<!DOCTYPE html> <html> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> Select file to upload: <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload File" name="submit"> </form> </body> </html>

🔹 اسکریپت آپلود فایل

فایل upload.php برای پردازش آپلود استفاده میشه:

<?php $target_dir = "uploads/"; // پوشه مقصد $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $fileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION)); // بررسی اینکه فایل واقعاً یک فایل آپلود شده است if (isset($_POST["submit"])) { if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // محدودیت حجم (مثلاً حداکثر 500KB) if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // فقط اجازه به فایل‌های خاص (مثال: JPG, PNG, GIF, PDF) if($fileType != "jpg" && $fileType != "png" && $fileType != "gif" && $fileType != "pdf") { echo "Sorry, only JPG, PNG, GIF & PDF files are allowed."; $uploadOk = 0; } // بررسی نهایی if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; } 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."; } } } ?>

🔹 توضیحات

  • $_FILES["fileToUpload"]["name"] → نام فایل اصلی

  • $_FILES["fileToUpload"]["tmp_name"] → مسیر موقت فایل روی سرور

  • $_FILES["fileToUpload"]["size"] → اندازه فایل

  • ()move_uploaded_file → انتقال فایل از مسیر موقت به مقصد نهایی

✅ نکات امنیتی مهم

  1. همیشه نوع فایل رو بررسی کنید (MIME و پسوند).

  2. محدودیت حجم فایل قرار بدید.

  3. پوشه آپلود رو از اجرای اسکریپت‌ها (مثل .php) محافظت کنید.

  4. نام فایل‌ها رو قبل از ذخیره تغییر بدید تا از برخورد نام یا حملات جلوگیری بشه.