PHP File Uploading
Introduction to PHP File Uploading
PHP आपको server पर files upload करने की ability provide करती है। PHP के द्वारा आप एक या एक से अधिक files upload कर सकते है। PHP के द्वारा आप केवल text file ही नहीं बल्कि binary file जैसे की कोई image आदि भी upload कर सकते है।
PHP आपको upload की जाने वाली file पर पूरा control provide करती है। इसके लिए PHP आपको authentication और file manipulation functions provide करती है। PHP द्वारा आप control कर सकते है की एक बार file upload करने के बाद आप उस file के साथ क्या करना चाहते है।
PHP द्वारा files को upload करने के लिए सबसे पहले आपको ये पता लगा लेना चाहिए की php.ini में file upload allow है या नहीं। यह file सभी PHP operations को control करती है। इस file में file _uploads variable की value on set होनी चाहिए। यदि इसकी value on नहीं है तो आपको इसे change करने की आवश्यकता है।
PHP File Upload Form
PHP द्वारा file को upload करने के लिए आपको एक HTML form की आवश्यकता होती है। इस form के द्वारा ही user अपने computer से file को select करेंगे। File को select करने के बाद जब users form को submit करेंगे उसी समय आपकी PHP file execute होगी। इस PHP file में वह code होगा जो file को successfully server पर define की गई directory में upload करेगा।
File upload करने के लिए HTML form create करने का उदाहरण निचे दिया जा रहा है।
<form action="uploader.php" method="post" enctype="multipart/form-data">
Select File to Upload : <input type="file" name="myfile">
<input type="submit" value="Upload">
</form>
ऊपर दिए गए उदाहरण में form tag के अंदर क्रमशः action, method और enctype attributes define किये गए है। इनमें action attribute से आप उस php file को define करेंगे जो form के submit होने पर execute होगी। यदि आप PHP code और HTML code same ही file में लिख रहे है तो आप इस attribute को blank छोड़ सकते है।
दूसरा attribute method है जो data को send किये जाने वाले method को define करने के लिए use किया जाता है। File uploading के case में इस attribute की value आप post ही define करते है।
तीसरा attribute enctype है। यह attribute file के encoding type को define करता है। File uploading के लिए इस attribute का define किया जाना आवश्यक है।
जिस प्रकार text box create करने के लिए आप input type text define करते है। उसी प्रकार file के लिए input type file define किया जाता है। जैसा की ऊपर दिए गए उदाहरण में किया गया है।
File को select करने के बाद upload script को call करने के लिए submit button का प्रयोग किया जाता है। जब user submit button पर click करता है तो action attribute में define की गयी script call हो जाती है।
$_FILES Array
जिस प्रकार $_POST और $_GET arrays के द्वारा आप form के दूसरे elements को PHP file में access करते है। उसी प्रकार select की गयी file को PHP script में access करने के लिए PHP आपको $_FILES array provide करती है।
$_FILES array द्वारा आप file और उससे related attributes को access कर सकते है। इस array के द्वारा आप file का नाम, file का type, file की size, file का temporary name और उससे सम्बंधित errors को access कर सकते है। यह information हर file के साथ attached होती है।
निचे file की properties को access करने का code किया जा रहा है। इन codes में myfile form के input type file element के नाम attribute की value है।
$_FILES[‘myfile’][‘name’];
यह code upload की जाने वाली file के नाम को return करता है।
$_FILES[‘myfile’][‘type’];
यह code file के type को return करता है।
$_FILES[‘myfile’][‘size’];
यह code file की size को return करता है।
$_FILES[‘myfile’][‘tmp_name’];
जब file user के computer से select की जाती है तो उसे temporary नाम दिया जाता है। यह code temporary file name return करता है।
$_FILES[‘myfile’][‘error’];
यह code file से related errors को return करता है।
move_uploaded_file() Function
किसी भी file को server में move करने के लिए PHP आपको built in move_uploaded_file() function provide करती है। यह function file को user के computer से server पर move करने का कार्य करता है। इस function का general syntax निचे दिया जा रहा है।
bool move_uploaded_file(String $file-name, String $target)
जैसा की आप ऊपर दिए गए syntax में देख सकते है move_uploaded_file() function एक boolean value return करता है। इस function को आप if statement के साथ use करते है। इस function में आप दो arguments pass करते है। पहला argument upload की जाने वाली file का temporary नाम होता है और दूसरा argument वह location होती है जहाँ पर आप file को store करना चाहते है।
यह method file को server में move करने का प्रयास करता है। यदि file succesfully move हो जाती है तो यह function true return करता है। यदि file successfully upload नहीं होती है तो यह function false return करता है।
Example
PHP द्वारा file upload करना निचे उदाहरण के माध्यम से समझाया जा रहा है।
example.php:
<html>
<head>
<title>PHP File Upload Demo</title>
</head>
<body>
<h1>PHP File Upload Demo</h1>
<form action="uploader.php" method="post" enctype="multipart/form-data">
Select a File to Upload : <input type="file" name="myfile"> <br /> <br />
<input type="submit" value="Upload File">
</form>
</body>
</html>
file1.php:
<?php
$target_path = "d:/";
$target_path = $target_path.basename($_FILES['myfile']['name']);
if(move_uploaded_file($_FILES['myfile']['tmp_name'],$target_path))
{
echo "<h2>File Uploaded Successfully.</h2>";
}
else
{
echo "<h2>Sorry, Unable to upload file. This could be because of some error.</h2>";
}
?>
ऊपर दिए गए उदाहरण में move_uploaded_file() के दूसरे argument के रूप में $target_path string pass की गयी है। यह string target location का path store करती है। इस उदाहरण में target location d:/ drive दी गयी है। क्योंकि आप local host use कर रहे है इसलिए आपको अपने ही computer की drive का path देना होगा। इस उदाहरण में file upload होने के बाद d:/ drive में store होगी।
$target_path एक string variable है जो upload किये जाने वाले path को store करता है। Script की second line में इस string पर basename() function call किया गया है। यह function बताता है की file को किस base नाम के साथ store करना है।
जैसे ही आप file को select करके upload button पर click करेंगे file1.php file execute हो जायेगी और file d:/ drive में upload हो जायेगी। File successfully upload होने पर File uploaded successfully message show होगा नहीं तो error message show होगा।