(!LANG:php सर्व्हरवर फाइल पाठवा. PHP वापरून फाइल अपलोड करा. फाइल अपलोड करण्यासाठी HTML फॉर्म जोडा

माझ्या साइटच्या पृष्ठांवर तुम्हाला पाहून आनंद झाला. आज आपण सर्व्हरवर फाइल्स अपलोड करण्याच्या अंमलबजावणीबद्दल बोलू. विषय खूपच मनोरंजक आहे. अनेक नवशिक्यांना या प्रश्नात रस आहे.

PHP वापरून सर्व्हरवर फाइल्स अपलोड करणेफोटो गॅलरी भरणे किंवा संपादक वापरून साइट पृष्ठ डिझाइन करणे हे आपले कार्य मोठ्या प्रमाणात सुलभ करेल (उदाहरणार्थ, TinyMCE). तुम्ही तुमच्या गरजेनुसार सर्व्हरवर कोणत्याही प्रकारच्या फाइल्स अपलोड करू शकता.

सर्व्हरवर फाइल अपलोड करण्यासाठी, तुम्हाला फाइल अपलोड करण्यासाठी एक फॉर्म तयार करणे आवश्यक आहे. तत्वतः, हा फॉर्म मजकूर फील्डसह नियमित फॉर्मपेक्षा फार वेगळा नाही, त्याशिवाय प्रकारनाही मजकूर, अ फाइल(आम्ही फाइल्स अपलोड करत असल्याने) आणि विशेषता फॉर्ममध्येच जोडली जाईल enctype="multipart/form data". एन्टाइपब्राउझर फॉर्म पॅरामीटर्सवर लागू होणारे एन्कोडिंगचे प्रकार परिभाषित करते.

PHP - सर्व्हरवर फाइल्स स्वहस्ते अपलोड करणे

डेमो: सर्व्हरवर फाइल अपलोड करणे

तुमचे फोटो सर्व्हरवर अपलोड करा

आम्ही फाइल अपलोड फॉर्म तयार केला आहे, सर्व्हरवर फाइल्स अपलोड करण्यासाठी एक साधा हँडलर लिहिण्याची वेळ आली आहे. चला लगेच ठरवूया की आम्ही फक्त ग्राफिक फाइल्स टाइपसह लोड करू jpeg, png, gif. आम्ही सर्व्हरवर अपलोड करण्याच्या फाइल्सचे प्रकार परिभाषित केल्यानंतर, आम्हाला सर्व्हरवरच एक फोल्डर तयार करणे आवश्यक आहे जिथे आम्ही आमच्या फाइल्स संचयित करू. माझ्या उदाहरणात, हे इमेज फोल्डर आहे, जिथे आपण आमच्या फाइल्स ठेवू.

"कोणत्याही त्रुटी आढळल्या नाहीत, फाइल सर्व्हरवर यशस्वीरित्या अपलोड केली गेली.", 1 => "प्राप्त झालेल्या फाइलच्या आकाराने जास्तीत जास्त स्वीकार्य आकार ओलांडला आहे, जो php.ini कॉन्फिगरेशन फाइलच्या upload_max_filesize निर्देशानुसार सेट केला आहे.", 2 => "अपलोड केलेल्या फाइलच्या आकाराने HTML फॉर्ममध्ये निर्दिष्ट केलेल्या MAX_FILE_SIZE मूल्यापेक्षा जास्त आहे.", 3 => "अपलोड फाइल केवळ अंशतः प्राप्त झाली होती.", 4 => "फाइल अपलोड केली गेली नाही.", 6 => " टेम्प फोल्डर गहाळ आहे. PHP 4.3.10 आणि PHP 5.0.3 मध्ये जोडले आहे.); //$fileTypes = array("jpg" => "image/jpeg", "png" => "image/png", "gif" => "image/gif") अपलोड करण्यासाठी फाइल प्रकार निश्चित करा; //अपलोड बटण दाबले असल्यास if(isset($_POST["upload"])) ( //डेटा रिकामा आहे की नाही ते तपासा जर(!empty($_FILES)) ( //त्रुटी तपासा जर($) _FILES["files" ]["error"] > 0) $err = $errUpload[$_FILES["files"]["error"]]; // जर(!in_array($_FILES[) अपलोड करण्यासाठी फाइल प्रकार तपासा "files"][" type"], $fileTypes)) $err = "हा फाइल प्रकार ".$_FILES["files"]["type"] ."अपलोडसाठी योग्य नाही!"; // जर काही त्रुटी नसतील, तर फाइल अपलोड करा if(empty($err)) ( $type = pathinfo($_FILES["files"]["name"]); $name = $uploadDir. शीर्षलेख ("स्थान: http://." $_SERVER["HTTP_HOST"] ."/less/uploads/uploads.php?name=". $name); बाहेर पडा; ) अन्यथा इको इम्प्लोड("
", $err); ) ) // सर्व्हरवर यशस्वी फाइल अपलोडबद्दलचा संदेश जर(isset($_GET["name"])) echo "

फाईल ".htmlentities($_GET["name"]) ."यशस्वीरित्या अपलोड केले!

"; //डिरेक्टरी $imgDir = array_values(array_diff(scandir($uploadDir), array("..", ".")))) मधील आउटपुट प्रतिमा; साठी($i = 0; $i< count($imgDir); $i++) { if($i % 2 == 0) echo "
"."\n"; प्रतिध्वनी " "."\n";) प्रतिध्वनी "

"."\n"; प्रतिध्वनी "http://".$_SERVER["HTTP_HOST"] ." "; ?>

आम्ही कोड लिहिल्यानंतर, सर्वकाही कार्य करते हे तपासल्यानंतर, नवशिक्याला मोठ्या फायली अपलोड करण्याची समस्या येऊ शकते. हे करण्यासाठी, आपल्याला सेटिंग्ज समायोजित करण्याची आवश्यकता आहे PHP.INI

; सेकंदात प्रत्येक स्क्रिप्टसाठी कमाल अंमलबजावणी वेळ max_execution_time = 3000 ; डेटा विनंतीचे विश्लेषण करण्यासाठी प्रत्येक स्क्रिप्ट किती वेळ घालवू शकते max_input_time = 400 ; स्क्रिप्ट किती मेमरी वापरू शकते (8 MB) memory_limit = 500M ; PHP स्वीकारेल असा POST डेटाचा कमाल आकार. post_max_size = 500M ; अपलोड केलेल्या फाइल्ससाठी कमाल अनुमत आकार. upload_max_filesize = 200M

सर्व्हरवर एक किंवा अधिक फायली अपलोड करण्यात सक्षम होण्यासाठी, फॉर्ममध्ये एक विशेष फील्ड वापरला जातो. फायरफॉक्स, IE आणि ऑपेरा ब्राउझरमध्ये, असा घटक मजकूर फील्ड म्हणून प्रदर्शित केला जातो, ज्याच्या पुढे "ब्राउझ ..." असे लेबल केलेले बटण असते (चित्र 1). सफारी आणि क्रोममध्ये, फक्त "फाइल निवडा" बटण उपलब्ध आहे (चित्र 2).

तांदूळ. 1. फायरफॉक्समध्ये फाइल अपलोड फील्डचे दृश्य

बटणावर क्लिक केल्याने फाइल निवडण्यासाठी एक विंडो उघडते, जिथे वापरकर्त्याला कोणती फाइल वापरायची आहे ते तुम्ही निर्दिष्ट करू शकता.

फाइल अपलोड फील्डचा सिंटॅक्स खालीलप्रमाणे आहे.

गुणधर्म टेबलमध्ये सूचीबद्ध आहेत. एक

हे फील्ड वापरण्यापूर्वी, आपण फॉर्ममध्ये खालील गोष्टी करणे आवश्यक आहे:

  1. डेटा पाठवण्याची पद्धत POST सेट करा (method="post");
  2. मल्टिपार्ट/फॉर्म-डेटा वर एन्टाइप विशेषता सेट करा.

फाइल अपलोड फॉर्म उदाहरण 1 मध्ये दर्शविला आहे.

उदाहरण १: फाइल अपलोड फील्ड तयार करा

HTML5 IE Cr Op Sa Fx

सर्व्हरवर फाइल पाठवत आहे

आकार गुणधर्माद्वारे फील्डची रुंदी सेट करणे शक्य असले तरी, वास्तविक रुंदीचा फॉर्मच्या परिणामावर कोणताही परिणाम होत नाही. सफारी आणि क्रोम ब्राउझरमध्ये, या विशेषताचा अजिबात परिणाम होत नाही.

एकाधिक विशेषता अधिक महत्वाची आहे, ते आपल्याला निवडीसाठी एका फाईलपुरते मर्यादित न ठेवता, परंतु एकाचवेळी डाउनलोड करण्यासाठी त्यापैकी अनेक निर्दिष्ट करण्याची परवानगी देते.

स्वीकार विशेषता वगळल्यास, कोणत्याही प्रकारच्या फायली जोडल्या आणि लोड केल्या जातात. स्वीकाराची उपस्थिती आपल्याला फाईलची निवड मर्यादित करण्यास अनुमती देते, जे विशेषतः महत्वाचे आहे जेव्हा आपण केवळ प्रतिमा किंवा व्हिडिओ अपलोड करू इच्छिता. मूल्य आहे, अनेक मूल्ये स्वल्पविरामाने विभक्त केली जातात. तुम्ही खालील कीवर्ड देखील वापरू शकता:

  • ऑडिओ/* - कोणत्याही प्रकारच्या संगीत फाइल्सची निवड;
  • प्रतिमा/* - ग्राफिक फाइल्स;
  • व्हिडिओ/* - व्हिडिओ फाइल्स.

टेबलमध्ये. आकृती 2 स्वीकार गुणधर्मासाठी काही वैध मूल्ये दर्शविते.

अतिरिक्त गुणधर्मांचा वापर उदाहरण २ मध्ये दर्शविला आहे.

HTML5 IE 10+ Cr Op Sa Fx

तुमचे फोटो सर्व्हरवर अपलोड करा

सर्व ब्राउझर नवीन विशेषतांना समर्थन देत नाहीत. IE पूर्णपणे एकाधिक दुर्लक्ष करते आणि स्वीकार करते, सफारी स्वीकारला समर्थन देत नाही आणि फायरफॉक्स MIME प्रकारांसह कार्य करत नाही, फक्त कीवर्ड. म्हणून, वरील उदाहरणामध्ये, विशेषतः फायरफॉक्ससाठी, ते image/*,image/jpeg वर सेट केले आहे. ऑपेरा मधील एका विचित्र बगबद्दल देखील जागरूक रहा, ते स्वल्पविराम स्वल्पविरामानंतर मोकळी जागा ठेवू देत नाही.

उदाहरणाचा परिणाम अंजीर मध्ये दर्शविला आहे. 3. कृपया लक्षात घ्या की अनेकांच्या उपस्थितीमुळे, फील्डचे स्वरूप काहीसे बदलले आहे.

शेवटचे अपडेट: 1.11.2015

सर्व्हरवर फाइल अपलोड करण्यासाठी, आम्हाला enctype="multipart/form-data" पॅरामीटर आणि $_FILES अॅरेसह फॉर्म वापरण्याची आवश्यकता आहे. चला तर मग एक फाईल बनवू upload.phpखालील सामग्रीसह:

फाइल अपलोड

फाइल निवडा:

एक फॉर्म येथे enctype="multipart/form-data" या विशेषता सह परिभाषित केला आहे. फॉर्ममध्ये फाइल निवडण्यासाठी एक विशेष फील्ड आहे.

सर्व अपलोड केलेल्या फाइल्स सहयोगी अॅरेमध्ये आहेत $_FILES. डाउनलोड केलेल्या फाइल्स अजिबात आहेत की नाही हे निर्धारित करण्यासाठी, तुम्ही if construct वापरू शकता: if ($_FILES)

$_FILES अॅरे द्विमितीय आहे. आम्ही फाइल्सचा एक संच अपलोड करू शकतो आणि प्रत्येक अपलोड केलेल्या फाइलमध्ये नाव विशेषताच्या मूल्याशी जुळणारी की द्वारे प्रवेश केला जाऊ शकतो.

फॉर्मवर फाइल अपलोड करण्यासाठीच्या घटकामध्ये name="filename" असल्याने, आम्ही $_FILES["filename"] या अभिव्यक्तीचा वापर करून ही फाइल मिळवू शकतो.

प्रत्येक फाइल ऑब्जेक्टचे स्वतःचे पॅरामीटर्स असतात जे आम्ही मिळवू शकतो:

    $_FILES["file"]["name"] : फाइलचे नाव

    $_FILES["file"]["type"] : फाइल सामग्री प्रकार, उदा. image/jpeg

    $_FILES["file"]["size"] : फाइल आकार बाइट्समध्ये

    $_FILES["file"]["tmp_name"] : सर्व्हरवर सेव्ह केलेल्या तात्पुरत्या फाइलचे नाव

    $_FILES["file"]["error"] : त्रुटी कोड अपलोड करा

आम्ही डाउनलोड त्रुटी देखील तपासू शकतो. आमच्याकडे त्रुटी नसल्यास, $_FILES["filename"]["error"] फील्डमध्ये UPLOAD_ERR_OK हे मूल्य आहे.

जेव्हा एखादी फाइल सर्व्हरवर पाठवली जाते, तेव्हा ती प्रथम तात्पुरत्या ठिकाणी अपलोड केली जाते, तेथून ती move_uploaded_file() फंक्शन वापरून सर्व्हर निर्देशिकेत हलवली जाते.

move_uploaded_file() फंक्शन दोन पॅरामीटर्स घेते: अपलोड केलेल्या तात्पुरत्या फाईलचा मार्ग आणि अपलोड केलेली फाईल जिथे ठेवायची तो मार्ग.

निर्बंध आणि सानुकूलित डाउनलोड करा

डीफॉल्टनुसार, अपलोड केलेल्या फाइल्सचा आकार 2 MB पर्यंत मर्यादित आहे. तथापि, तुम्ही कॉन्फिगरेशन फाइलमध्ये हा निर्देशक कॉन्फिगर करू शकता. चला हा निर्देशक बदलू, उदाहरणार्थ, 10 mb. हे करण्यासाठी, फाइलमध्ये शोधा php.iniपुढील ओळ:

अपलोड_max_filesize = 2M

मध्ये बदलूया

अपलोड_max_filesize = 10M

आम्ही तात्पुरत्या डाउनलोडसाठी फोल्डर देखील सेट करू शकतो. यासाठी फाईलमध्ये दि php.iniखालील ओळ शोधा:

;upload_tmp_dir =

मध्ये बदलूया

Upload_tmp_dir = "C:/php/upload"

आम्हाला php डिरेक्टरीमध्ये अपलोड फोल्डर देखील तयार करावे लागेल.

मल्टीबूट

चला स्क्रिप्ट बदलूया upload.phpजेणेकरून ते एकाधिक लोडिंगला समर्थन देते:

$error) ( जर ($error == UPLOAD_ERR_OK) ( $tmp_name = $_FILES["uploads"]["tmp_name"][$key]; $name = $_FILES["uploads"]["name"][$ key]; move_uploaded_file($tmp_name, "$name"); ) ) ) ?>

फाइल अपलोड




प्रत्येक फाइल सिलेक्ट फील्डमध्ये name="uploads" विशेषता असते, त्यामुळे सर्व्हर अपलोड केलेल्या फाइल्सच्या सेटला सिंगल अॅरे मानेल.

नंतर, फोरच लूप वापरून, सर्व फायलींमधून पुनरावृत्ती करा आणि त्या वेबसाइट निर्देशिकेत जतन करा.

जवळजवळ प्रत्येक प्रकल्पात, विकासकाला सर्व्हरवर फायली अपलोड करण्याची आवश्यकता असते. फोटो, चित्रे, दस्तऐवज, संग्रहण आणि बरेच काही वेब इंटरफेसद्वारे (ब्राउझरद्वारे) सर्व्हरवर अपलोड केले जाऊ शकते.


http://localhost/index.php?name=myname&page=10

index.php पृष्ठावर GET विनंती परिभाषित करते. या प्रकरणात, "मायनाम" आणि "10" मूल्यांसह "नाव" आणि "पृष्ठ" हे पॅरामीटर्स अनुक्रमे स्क्रिप्टमध्ये पाठवले जातात. तुम्ही बघू शकता, क्वेरीमध्ये "&" सह जोडलेल्या "name=value" जोड्या असतात. विनंती पृष्ठ पत्त्यापासून प्रश्नचिन्हाने विभक्त केली आहे "?".

परंतु GET मोठ्या डेटाचे हस्तांतरण करण्यासाठी योग्य नाही. यासाठी POST पद्धत आहे. ही पद्धत वापरकर्त्याकडून लपवलेला डेटा प्रसारित करते आणि पृष्ठ पत्ता अपरिवर्तित राहतो. सैद्धांतिकदृष्ट्या, POST पद्धत आपल्याला डेटाचे प्रचंड ब्लॉक हस्तांतरित करण्याची परवानगी देते, परंतु बहुतेक प्रदाते 5-10 मेगाबाइट्सची कठोर मर्यादा सेट करतात.

फाइल अपलोड अंमलात आणण्यासाठी, तुम्ही वापरकर्त्याला योग्य फॉर्म प्रदान करणे आवश्यक आहे. टाइप फाइलचा इनपुट टॅग फाइल अपलोड करण्यासाठी आहे.

अपलोड करण्यासाठी फाइल निवडा:

वापरकर्ता इच्छित फाइल निवडतो, "सबमिट!" बटण दाबतो, त्यानंतर ब्राउझर निर्दिष्ट फाइल सर्व्हरवर हस्तांतरित करतो. फाइल लोड केल्यावर, receiver.php लाँच केले जाते आणि फॉर्ममध्ये पास केलेला सर्व डेटा आपोआप उपलब्ध होतो.

अपलोड केलेल्या फाइल्सची सूची $_FILES ग्लोबल अॅरेमध्ये साठवली जाते. हा एक सहयोगी अ‍ॅरे आहे, जेथे प्रत्येक घटकामध्ये एका फाइलचे वर्णन असते. चला एक उदाहरण पाहू:

3145728) ( $filesize = ($filesize != 0)? sprintf("(%.2f Mb)", $filesize / 1024): ""; die("त्रुटी: संलग्न फाइलचा आकार ". $filesize." आहे परवानगीपेक्षा मोठे (3 MB)."); ) इतर ( $filename = $_FILES["file"]["name"]; $filepath = $_FILES["file"]["tmp_name"]; $filetype = $ _FILES[" file"]["type"]; if($this->filetype == null || $this->filetype == "") $this->filetype = "अज्ञात/अज्ञात"; ) ) ) प्रतिध्वनी "फायली यशस्वीरित्या अपलोड केली: ". $filename; ?>

सर्व अपलोड केलेल्या फाइल्स सर्व्हरद्वारे तात्पुरत्या निर्देशिकेत सेव्ह केल्या जातात आणि स्क्रिप्ट संपल्यानंतर स्वयंचलितपणे हटवल्या जातात. जर तुम्हाला फाइल सर्व्हरवर सेव्ह करायची असेल, तर तुम्हाला ती साइटच्या एका डिरेक्टरीमध्ये हलवावी लागेल. यासाठी एक विशेष कार्य आहे. move_uploaded_file(). हे सहसा फंक्शनच्या संयोगाने वापरले जाते is_uploaded_file(), जे तुम्हाला फाइल फॉर्मद्वारे अपलोड केली आहे की नाही हे निर्धारित करण्यास अनुमती देते. उदाहरणार्थ:

प्रत्येक अपलोड केलेल्या फाइलची माहिती स्क्रिप्टमध्ये $_FILES अॅरेचे घटक म्हणून दर्शविली जाते. घटकाचे नाव फॉर्म टॅगच्या नावाच्या गुणधर्माद्वारे निर्धारित केले जाते. आमच्या बाबतीत, नाव विशेषता "ufile" च्या बरोबरीची आहे, याचा अर्थ या फाइलबद्दलचा डेटा $_FILES["ufile"] घटकामध्ये संग्रहित केला जाईल.

$_FILES चा प्रत्येक घटक देखील निश्चित नावांसह पाच घटकांचा समावेश असलेला अॅरे आहे:

अपलोड केलेल्या फायलींचा आकार प्रदाता ते प्रदाता लक्षणीयरीत्या बदलू शकतो. काही प्रशासक फाइल अपलोड करण्यास अजिबात परवानगी देत ​​नाहीत. या प्रकरणात, फाइल अद्याप लोड केली जाऊ शकते, सर्व्हर ती हटवेल आणि स्क्रिप्टला सांगेल की फाइल होती, परंतु आधीच हटविली गेली आहे.

12/27/16 19K

आज मी तुम्हाला PHP स्क्रिप्ट वापरून सर्व्हरवर फाइल्स अपलोड करण्याशी संबंधित विविध परिस्थितींबद्दल सांगू इच्छितो. मी मूव्ह अपलोड केलेली फाईल PHP वापरून सर्वात सोपी फाइल अपलोड आणि मल्टी-अपलोड दोन्हीची उदाहरणे देण्याचा प्रयत्न करेन.

सर्व्हरवर फाइल्स अपलोड करण्यासाठी. सर्व प्रथम, आपल्याला फाइल इनपुट फील्डसह HTML फॉर्म तयार करणे आवश्यक आहे. नंतर त्यास एक PHP स्क्रिप्ट संलग्न करा जी फाइल निर्दिष्ट निर्देशिकेत हलवेल. PHP स्क्रिप्ट वापरून सर्व्हरवर फाइल अपलोड करण्यासाठी, या चरणांचे अनुसरण करा:

  1. एक साधा HTML फॉर्म तयार करा: तुम्हाला फाइल निर्दिष्ट करण्याच्या क्षमतेसह एक साधा फॉर्म आवश्यक असेल. हे basic.php फाइलमध्ये ठेवले आहे:

मूलभूत फाइल अपलोड

मूलभूत फाइल अपलोड


फॉर्म तयार करण्यासाठी वरील कोड आवश्यक आहे. वापरकर्त्याने फाइल निवडताच आणि अपलोड बटणावर क्लिक करताच, फॉर्म त्याच पृष्ठावर POST पद्धत वापरून डेटा सबमिट करेल, कारण basic.php फाइल हँडलर म्हणून निर्दिष्ट केली आहे:

महत्त्वाचे: जोडण्यास विसरू नका टॅगवर enctype=”multipart/form-data”

.

  1. अपलोड फॉर्मवर प्रक्रिया करण्यासाठी PHP स्क्रिप्ट तयार करा. PHP मध्ये, अपलोड केलेल्या फाइल्सची सर्व माहिती $_FILES ग्लोबल व्हेरिएबलमध्ये असते. म्हणजेच, $_FILES वापरून, तुम्ही फाइल अपलोड केली आहे का ते तपासू शकता. जर फाइल अपलोड केली गेली असेल, तर तुम्ही move_uploaded_file PHP फंक्शन वापरून ती इच्छित निर्देशिकेत हलवू शकता:

उपरोक्त कोड वापरकर्त्याने फाइल अपलोड केली आहे का ते तपासते. जर फाइल लोड केली असेल, तर आम्ही फाइल निर्दिष्ट निर्देशिकेत हलवतो. वरील स्क्रिप्टमध्ये, आम्ही फाईल बेसिक.पीएचपी फाइलच्या फोल्डरमध्ये हलवत आहोत.

खाली पूर्ण आहे PHP आवृत्ती हलवा अपलोड केलेल्या फाइलचे उदाहरण:

मूलभूत फाइल अपलोड

मूलभूत फाइल अपलोड


कृपया सर्व्हरवर अपलोड केलेल्या या PHP हलवा फाइल उदाहरणाची चाचणी करू नका. हे सुरक्षित नाही आणि PHP वापरून फाइल्स कशा अपलोड करायच्या हे दाखवण्यासाठी विशेषतः तयार केल्या गेल्या.

प्रश्न: वरील लिपी असुरक्षित का आहे?
उत्तर: वरील स्क्रिप्टचा वापर करून, तुम्ही कोणत्याही प्रकारची फाइल सर्व्हरवर अपलोड करू शकता. म्हणजेच, जर तुम्ही या फॉर्ममधील स्क्रिप्ट “लाइव्ह” सर्व्हरवर वापरत असाल, तर कोणताही हॅकर त्यांच्या स्वतःच्या PHP स्क्रिप्ट अपलोड करू शकेल आणि तुमची साइट आणि सर्व्हर हॅक करू शकेल.

थोड्या वेळाने, आम्ही सर्व्हरवर फायली अपलोड करण्यासाठी स्क्रिप्टचे संरक्षण करण्याबद्दल अधिक तपशीलवार बोलू.

$_FILES म्हणजे काय?

$_FILES हे $_POST किंवा $_GET सारखे PHP ग्लोबल व्हेरिएबल आहे. एचटीटीपी POST पद्धत वापरून अपलोड केलेल्या फाइलबद्दल माहिती असलेला हा एक सहयोगी अॅरे आहे.

म्हणजेच, जर आपण वरील स्क्रिप्टसाठी print_r($_FILES) कार्यान्वित केले तर आपल्याला खालील माहिती मिळेल:

अॅरे ( => अॅरे ( => अपलोड-फाइल-php.jpg => इमेज/jpeg => /Applications/XAMPP/xamppfiles/temp/phpcQiYhh => 0 => 6887))

म्हणजेच प्रत्येक क्षेत्रासाठी अॅरेमध्ये एक घटक तयार केला जातो. आपण तयार केल्यास , नंतर घटकाचे नाव देखील चाचणीमध्ये बदलले जाईल. उदाहरणार्थ:

अॅरे ( => अॅरे ( => अपलोड-फाइल-php.jpg => इमेज/jpeg => /Applications/XAMPP/xamppfiles/temp/phpcQiYhh => 0 => 6887))

आता, PHP च्या मूव्ह अपलोड केलेल्या फाइलसह हलवलेल्या प्रत्येक इनपुट फाइलसाठी, पाच घटक तयार केले जातात ( नाव, प्रकार, tmp_name, त्रुटी, आकार). चला या घटकांवर बारकाईने नजर टाकूया:

  1. नाव: वापरकर्त्याने अपलोड केलेल्या फाइलचे नाव आहे. तुम्ही abc.txt फाइल ब्राउझरमध्ये लोड केल्यास, नाव घटकाला abc.txt असे नाव दिले जाईल;
  2. प्रकार: अपलोड केलेल्या फाइलचा प्रकार, किंवा mime-प्रकार अधिक अचूक होण्यासाठी. JPG फाइलसाठी, हा घटक image/jpeg असेल. मजकूर लोड केला असल्यास, घटक मजकूर/साधा वर सेट केला जाईल. वेगवेगळ्या फाइल प्रकारांसाठी माइम-प्रकार वेगळा असेल. खाली सर्वात सामान्य माइम प्रकार आहेत:
  • JPEG: image/jpeg ;
  • पीएनजी: इमेज/पीएनजी;
  • मजकूर: मजकूर/साधा;
  • शब्द: application/msword.
  1. tmp_name: डाउनलोड केलेल्या फाइलसाठी तात्पुरते स्थान. हा मार्ग php.ini फाईलमध्ये निर्दिष्ट केलेल्या upload_tmp_dir व्हेरिएबलमध्ये बदलला जाऊ शकतो.
  1. त्रुटी: त्रुटी माहिती. डाउनलोड प्रक्रियेदरम्यान उद्भवलेल्या त्रुटीचा प्रकार समाविष्ट आहे. उदाहरणार्थ, जेव्हा फाइलचा आकार कमाल मर्यादा ओलांडतो किंवा अपलोड करण्यासाठी कोणतीही फाइल निर्दिष्ट केलेली नसते तेव्हा. उद्भवणाऱ्या कोणत्याही त्रुटीसाठी, संख्यात्मक मूल्य आणि स्थिरांक असतो. मध्ये होऊ शकणार्‍या त्रुटींची संपूर्ण यादी खालीलप्रमाणे आहे PHP हलवा अपलोड फाइल उदाहरण:
  • UPLOAD_ERR_OK (मूल्य 0). म्हणजे फाइल यशस्वीरित्या त्रुटींशिवाय अपलोड झाली;
  • UPLOAD_ERR_INI_SIZE (मूल्य 1). फाइलचा आकार php.ini फाइलमधील upload_max_filesize व्हेरिएबलपेक्षा जास्त आहे;
  • UPLOAD_ERR_FORM_SIZE (मूल्य 2). फाइलचा आकार MAX_FILE_SIZE फॉर्म व्हेरिएबलमध्ये सेट केलेल्या मूल्यापेक्षा जास्त आहे;
  • UPLOAD_ERR_PARTIAL (मूल्य 3). फाइल पूर्णपणे लोड केलेली नाही;
  • UPLOAD_ERR_NO_FILE (मूल्य 4). डाउनलोड करण्यासाठी कोणतीही फाइल नाही;
  • UPLOAD_ERR_NO_TMP_DIR (मूल्य 6). निर्दिष्ट तात्पुरती स्टोरेज निर्देशिका अस्तित्वात नाही;
  • UPLOAD_ERR_CANT_WRITE (मूल्य 7). फाइल डिस्कवर लिहिता येत नाही.
  1. आकार: अपलोड केलेल्या फाइलचा आकार बाइट्समध्ये.

move_uploaded_file म्हणजे काय?

move_uploaded_file हे एक फंक्शन आहे जे अपलोड केलेल्या फाइलला तात्पुरत्या डिरेक्टरीमधून गंतव्य फोल्डरमध्ये हलवते. move_uploaded_file हलवण्यापूर्वी, PHP HTTP पोस्ट पद्धतीमध्ये निर्दिष्ट केलेली फाइल अपलोड झाली आहे का ते तपासते.

फाइल यशस्वीरित्या हलवल्यास, तुम्हाला खरा किंवा खोटा प्रतिसाद मिळेल. पहिल्या उदाहरणात, आम्ही कोडची खालील ओळ वापरली:

move_uploaded_file($_FILES["inputfile"]["tmp_name"], $destiation_dir)

आणि आता ते सुंदर बनवूया आणि माहिती प्रदर्शित करूया:

if(move_uploaded_file($_FILES["inputfile"]["tmp_name"], $destiation_dir))( प्रतिध्वनी "फाइल अपलोड केलेली" ) इतर( इको "फाइल अपलोड केलेली नाही" )

अपलोड फाइल आकार मर्यादा बदला

फाइल अपलोड करण्यासाठी प्रत्येक फॉर्ममध्ये आकार मर्यादा असणे आवश्यक आहे, अन्यथा वापरकर्ते भारी फाइल्स अपलोड करतील. अपलोड केलेल्या PHP फाइलवर मर्यादा सेट करण्याचे दोन मार्ग आहेत:

  • PHP.ini फाइलमध्ये upload_max_filesize हे विशेष व्हेरिएबल आहे, जे अपलोड केलेल्या फाइल्सच्या कमाल आकारासाठी जबाबदार आहे. येथे php.ini ची एक ओळ आहे जी अपलोड केलेल्या फाइल्सचा आकार 20MB पर्यंत मर्यादित करते: upload_max_filesize = 20M.
  • अपलोड केलेली फाइल मोठी असल्यास वापरकर्त्याला UPLOAD_ERR_INI_SIZE त्रुटी किंवा $_FILES मूल्य "2" मिळेल. हे लक्षात घेणे महत्त्वाचे आहे की upload_max_filesize व्हेरिएबलचे मूल्य php.ini मध्ये निर्दिष्ट केलेल्या post_max_size व्हेरिएबलच्या मूल्यापेक्षा जास्त नसावे;
  • तुम्ही अपलोड फॉर्मवर UPLOAD_ERR_INI_SIZE नावाचा छुपा इनपुट घटक ठेवून अपलोड फाइल आकार मर्यादित करू शकता. आपण हे असे करू शकता: .

जर तुम्हाला फाइल आकार मोठ्या प्रमाणात वाढवायचा असेल तर php स्क्रिप्ट्सची अंमलबजावणी वेळ बदलण्यास विसरू नका.

PHP फाइल अपलोड स्क्रिप्ट सुरक्षित कसे करावे

अपलोड केलेल्या फायलींचा आकार कसा मर्यादित करायचा आणि वापरकर्त्यांनी अपलोड केलेल्या फायलींचे प्रकार कसे ठरवायचे हे आता तुम्हाला माहित आहे. आमच्या PHP हलवलेल्या फाइल उदाहरणाच्या सुरक्षिततेची काळजी घेण्याची वेळ आली आहे.

उदाहरण म्हणून, वापरकर्ते 1 MB पेक्षा मोठ्या jpeg फाइल अपलोड करू शकत नाहीत म्हणून ते बनवू. php.ini फाइलमधील upload_max_filesize व्हेरिएबलमध्ये योग्य मर्यादा सेट करा. खाली स्क्रिप्टची सुधारित आवृत्ती आहे:

सुरक्षित फाइल अपलोड

सुरक्षित फाइल अपलोड


PHP स्क्रिप्ट वापरून मल्टी-अपलोड फायली

तुम्ही $_FILES आणि move_uploaded_file PHP वापरून एकाच वेळी अनेक फाइल्स अपलोड करू शकता. खाली मी तुम्हाला PHP स्क्रिप्ट वापरून फाइल्स मल्टी-अपलोड करण्याचे दोन मार्ग सांगेन:

  1. इनपुटची वेगवेगळी नावे वापरणे.
  2. समान इनपुट नाव वापरणे परंतु अॅरे वापरणे.

1. भिन्न इनपुट नावे वापरणे:

तुम्ही एकाधिक इनपुट घटक वापरून एकाच वेळी अनेक फाइल्स अपलोड करू शकता. आधी सांगितल्याप्रमाणे, जर आपण एकाधिक इनपुट घटक तयार केले, तर अनेक मुख्य घटक $_FILES मध्ये तयार होतील. उदाहरणार्थ, खालील फॉर्मसाठी:

$_FILES खालील सामग्रीसह अॅरेचे प्रतिनिधित्व करेल:

अ‍ॅरे ( => अ‍ॅरे ( => 20141002_094257.jpg => image/jpeg => /Applications/XAMPP/xamppfiles/temp/phpoBWrBZ => 0 => 2669096) => अॅरे ( => 20141002_094257.jpg => image/jpeg =41002_04/jpeg =4. > /अनुप्रयोग/XAMPP/xamppfiles/temp/phpjwUmVZ => 0 => 2207657))

एक घटक अवतार (इमेज) साठी आहे आणि दुसरा रेझ्युमे अपलोडसाठी आहे ( .doc स्वरूपात फाइल):

एकाधिक फाइल अपलोड

एकाधिक फाइल अपलोड



2. आम्ही एक इनपुट फील्ड वापरतो, परंतु अॅरे वापरतो:

इतर इनपुट प्रकारांप्रमाणे, अपलोड केलेली फाइल PHP हलवण्यासाठी आम्ही php मध्ये निर्दिष्ट केलेल्या इनपुट प्रकारासह अॅरे वापरू शकतो. म्हणजे:

म्हणजेच, वरील HTML साठी, $_FILES खालील संरचनेसह डेटा प्रदान करेल:

अॅरे ( => अॅरे ( => अॅरे ( => upload-file-php.jpg => variable-scope-php.jpg => magic-constants.jpg) => अॅरे ( => image/jpeg => image/jpeg => image/jpeg) => अॅरे ( => /Applications/XAMPP/xamppfiles/temp/phpML5kOy => /Applications/XAMPP/xamppfiles/temp/phpNZbuw7 => /Applications/XAMPP/xamppfiles/temp/phpO8VFAk) => ( => ० => ० => ०) => अॅरे ( => ६८८७ => ८०३६ => ९९६७)))

लेखात वापरलेला कोड डाउनलोड करा

हे प्रकाशन मैत्रीपूर्ण प्रोजेक्ट टीमने तयार केलेल्या "PHP स्क्रिप्टसह फाइल अपलोड" या लेखाचे भाषांतर आहे.

चांगले वाईट