Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 42

Image Upload Script

हम क्या बना रहे हैं

Image upload users को एक तस्वीर — profile photo, product image — आपके server को भेजने देता है। इसके दो हिस्से हैं: एक HTML form जो file भेजता है, और PHP जो उसे पाता, जाँचता और save करता है। जाँच ठीक से करना ज़रूरी है, क्योंकि uploads आम security कमज़ोर बिंदु हैं।

💡 Upload की files ख़ास $_FILES array में आती हैं, एक temporary path के साथ जिसे आप असली folder में move करते हैं।

Upload form

<form method="post" action="upload.php"
      enctype="multipart/form-data">
  <input type="file" name="photo">
  <button type="submit">Upload</button>
</form>

मुख्य हिस्सा है enctype="multipart/form-data" — इसके बिना file खुद नहीं भेजी जाती, सिर्फ़ उसका नाम। input का name ("photo") ही है जिससे PHP उसे ढूँढता है।

$_FILES पढ़ना

<?php
  $file = $_FILES["photo"];
  echo $file["name"];      // मूल नाम
  echo $file["size"];      // bytes में size
  echo $file["tmp_name"];  // server पर temporary path
?>

PHP upload को $_FILES["photo"] में रखता है। ज़रूरी field है tmp_name — वो temporary जगह जहाँ PHP ने file save की जब तक आप move न करें।

Type और size जाँचना

<?php
  $file = $_FILES["photo"];
  $allowed = ["jpg", "jpeg", "png"];
  $ext = strtolower(pathinfo($file["name"], PATHINFO_EXTENSION));

  if ($file["size"] > 2 * 1024 * 1024) {
      echo "File too big (max 2MB)";
  } elseif (!in_array($ext, $allowed)) {
      echo "Only JPG and PNG allowed";
  } elseif (!getimagesize($file["tmp_name"])) {
      echo "Not a real image";
  } else {
      echo "OK to save";
  }
?>
OK to save

हम size जाँचते हैं, सिर्फ़ सुरक्षित extensions allow करते हैं, और getimagesize() से पक्का करते हैं कि यह असली image है। तीनों जाँच मायने रखती हैं — बुरी file छुपाई जा सकती है।

File save करना

<?php
  $newName = "uploads/" . uniqid() . "." . $ext;
  if (move_uploaded_file($file["tmp_name"], $newName)) {
      echo "Uploaded as $newName";
  }
?>
Uploaded as uploads/64f3a1.jpg

हम uniqid() से unique नाम बनाते हैं (user के file नाम पर कभी भरोसा नहीं) और file को move_uploaded_file से move करते हैं, जो यह भी पक्का करता है कि यह असली upload थी।

Security tips

  • File rename कीजिए अपने बनाए value पर — user का नाम मत रखिए।
  • सिर्फ़ image extensions allow कीजिए और getimagesize() से verify कीजिए।
  • Size limit कीजिए ताकि विशाल uploads आपकी disk न भरें।
  • .php या दूसरी executable files upload कभी allow न कीजिए।

आम गलतियाँ

  • enctype छूटना। तब file नहीं भेजी जाती, सिर्फ़ उसका नाम।
  • Browser के file type पर भरोसा। getimagesize() से verify कीजिए, सिर्फ़ बताए type से नहीं।
  • User का file नाम रखना। clashes और छिपे scripts बचाने को rename कीजिए।
  • move_uploaded_file की जगह rename इस्तेमाल करना। पहला यह भी जाँचता है कि यह असली upload थी।

सारांश

  • Uploads को form पर enctype="multipart/form-data" चाहिए।
  • PHP file को $_FILES में पाता है, एक tmp_name path के साथ।
  • size, allowed extension जाँचिए, और getimagesize() से पक्का कीजिए।
  • move_uploaded_file से बनाए नाम पर save कीजिए।
  • User का नाम कभी न रखिए और .php uploads allow न कीजिए।

आगे, आसपास का form validate कीजिए form validation से, या file path रखिए MySQL में।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

PHP में file upload कैसे काम करता है?
HTML form file को enctype="multipart/form-data" के साथ भेजता है। PHP उसे $_FILES array में पाता है, जिसमें file का name, type, size और एक temporary path होता है। फिर आप उसे permanent folder में move करते हैं।
Form में enctype="multipart/form-data" क्यों ज़रूरी है?
इसके बिना browser सिर्फ़ file नाम भेजता है, file खुद नहीं। multipart/form-data encoding browser को असली file content भेजने को कहता है, ताकि PHP उसे पा सके।
कैसे जाँचूँ कि upload की file सच में image है?
size जाँचिए, फिर getimagesize() से पक्का कीजिए कि यह image है (जो non-images के लिए fail होता है), और सिर्फ़ jpg, png जैसे सुरक्षित extensions allow कीजिए। सिर्फ़ file name या browser-बताए type पर भरोसा न कीजिए।
move_uploaded_file क्या करता है?
PHP पहले upload को temporary जगह save करता है। move_uploaded_file() उसे वहाँ से आपके चुने folder में move करता है। इस function का इस्तेमाल (plain rename नहीं) यह भी पक्का करता है कि file असली upload थी, जो ज़्यादा सुरक्षित है।
Uploads को सुरक्षित कैसे बनाऊँ?
type और size validate कीजिए, file को अपने बनाए नाम पर rename कीजिए (user के नाम पर कभी भरोसा नहीं), uploads को web root के बाहर रखिए या उस folder में script execution block कीजिए, और .php files upload कभी allow न कीजिए।
← Back to PHP Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicShopping Cart Logic आपकी प्रगति: 42 / 50 (84%) · Lesson 43 / 50 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें