2012-03-02 21 views
5

मैंने एक व्यवस्थापक पृष्ठ के साथ एक फोटोग्राफी वेबसाइट बनाई है जो एक mysql तालिका में विभिन्न श्रेणियों में फ़ोटो अपलोड करता है। यह बहुत काम करता है, लेकिन मैं एक समय में केवल एक फ़ाइल अपलोड कर सकता हूं और मैं कई छवियों का चयन करने में सक्षम होना चाहता हूं।एक इनपुट फ़ील्ड के साथ एकाधिक छवियों को अपलोड करना

यहाँ प्रपत्र

<form action="index.php" enctype="multipart/form-data" name="myForm" id="myForm" method="post"> 

    <select name="category" id="category"> 
     <option value="Nature">Nature</option> 
     <option value="People">People</option> 
     <option value="Abstract">Abstract</option> 
    </select> 

    <input type="file" name="fileField" id="fileField" /> 

    <input type="submit" name="submit" id="submit" value="Add Images" /> 

</form> 

है और यहाँ प्रपत्र पार्स करने के लिए php है

if (isset($_POST['submit'])) { 

$category = mysql_real_escape_string($_POST['category']); 
// Add this product into the database now 
$sql = mysql_query("INSERT INTO images (category, date_added) 
    VALUES('$category',now())") or die (mysql_error()); 


$pid = mysql_insert_id(); 
// Place image in the folder 
$newname = "$pid.jpg"; 
move_uploaded_file($_FILES['fileField']['tmp_name'], "../photos/$newname"); 
header("location: thumbnail_generator.php"); 
exit(); 
} 

मैं एचटीएमएल 5 फ़ाइल इनपुट विधि में देखा, और जहाँ तक मैं बता सकता हूँ, मैं बदल सकते हैं folllows के रूप में इनपुट:

<input type="file" name="fileField[]" id="fileField" multiple="multiple"/> 

यह मुझे साइट पर कई फाइलों का चयन करने की अनुमति देता है, लेकिन मैं यह नहीं समझ सकता कि कैसे टी ओ इसे मेरे PHP में लागू करें। कोई भी सहायताकाफी प्रशंसनीय होगी।

उत्तर

4

आप शायद uploadify या swfupload या plupload की तरह कुछ के लिए देख रहे हैं।

+0

व्यक्तिगत रूप से मैं SWFUpload का उपयोग करता हूं, अपलोडिफ़ वास्तव में SWFUpload का उपयोग करता है, इसलिए यह निर्भर करता है कि आपकी जावास्क्रिप्ट कितनी अच्छी है, मैं अपलोडिफ़ी या SWFUpload के लिए जाऊंगा। –

+0

swfupload – bubakazouba

0

इसे आज़माएं।

http://www.uploadify.com/demos/

Uploadify एक शक्तिशाली और उच्च अनुकूलन फ़ाइल अपलोड स्क्रिप्ट है। अपलोड करना आसान है और न्यूनतम प्रयास और छोटे कोडिंग ज्ञान के साथ चलना आसान है।

+0

यह एक उत्तर से अधिक टिप्पणी है। – hakre

0

आपको छवियों की एक सरणी -> फ़ाइल फ़ील्ड [] प्राप्त होगी। बस इस सरणी के माध्यम से पुनरावृत्त करें और छवियों को वैसे ही जोड़ें जैसे आप उन्हें पहले जोड़ रहे थे। इसके अलावा, मैं इस, बहुत अच्छी स्क्रिप्ट का उपयोग कर सुझाव देंगे - http://valums.com/ajax-upload/

संपादित करें: बस कम से कम कुछ सुरक्षा जांच, न्यूनतम और अधिकतम अपलोड आकार, फ़ाइल एक्सटेंशन और माइम प्रकार की जाँच की तरह लागू करने के लिए मत भूलना! भले ही यह बैक एंड के लिए है, फिर भी यह अप्रिय घटनाओं का कारण बन सकता है।

2

यह काम करता है-अगर multiple file fields­Docs था, तो यह PHP के लिए पारदर्शी है। यहां कुछ सरल उदाहरण कोड दिया गया है:

<html> 
    <body> 
    <form action="" method="post" enctype="multipart/form-data"> 
     <input type="file" name="fileField[]" id="fileField" multiple="multiple"> 
     <input type="text" name="test" value="test"> 
     <input type="submit" name="submit"> 
    </form> 
    </body> 
</html> 
<?php 
var_dump($_FILES, $_POST); 

इसे अपने होस्ट पर स्टोर करें और अनुरोध करें। इसके बाद आप इसके साथ खेल सकते हैं, यह आपको $_FILES और $_POST सरणी की संरचना दिखाएगा।

उदाहरण आउटपुट:

array 
    'fileField' => 
    array 
     'name' => 
     array 
      0 => string 'hakre-iterator-fun-cut-top.png' (length=30) 
      1 => string 'hakre-iterator-fun-cut-middle.png' (length=33) 
     'type' => 
     array 
      0 => string 'image/png' (length=9) 
      1 => string 'image/png' (length=9) 
     'tmp_name' => 
     array 
      0 => string '/tmp/php1A2.tmp' (length=15) 
      1 => string '/tmp/php1A3.tmp' (length=15) 
     'error' => 
     array 
      0 => int 0 
      1 => int 0 
     'size' => 
     array 
      0 => int 234001 
      1 => int 213058 
array 
    'test' => string 'test' (length=4) 
    'submit' => string 'Submit' (length=6) 

देखें Uploading multiple files­Docs

5
<form method="post" action="" enctype="multipart/form-data"> 
<input type="hidden" name="MAX_FILE_SIZE" value="500000"> 
Add Photos <input multiple="true" onchange="this.form.submit()" type="file" name="photos[]"/> 

<input type="hidden" name="sendfiles" value="Send Files" /> 
</form> 

    <?php 
define ("MAX_SIZE","5000"); 
function getExtension($str) 
{ 
     $i = strrpos($str,"."); 
     if (!$i) { return ""; } 
     $l = strlen($str) - $i; 
     $ext = substr($str,$i+1,$l); 
     return $ext; 
} 

$errors=0; 

if(isset($_POST['sendfiles'])) 
{ 
    $uploaddir = "files/"; //a directory inside 
    foreach ($_FILES['photos']['name'] as $name => $value) 
    { 
     $filename = stripslashes($_FILES['photos']['name'][$name]); 
    //get the extension of the file in a lower case format 
      $extension = getExtension($filename); 
     $extension = strtolower($extension); 
     echo "\n This is the extension: ",$extension; 
     if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
     { 
     //print error message 
     ?> 
      <h4>Unknown extension!</h4> 
      <?php 
      $errors=1; 
     } 
     else 
     { 
      $size=filesize($_FILES['photos']['tmp_name'][$name]); 
      if ($size > MAX_SIZE*1024) 
      { 
      ?> 
       <h4>You have exceeded the size limit!</h4> 
       <?php 
       $errors=1; 
      } 
      $image_name=$filename.'.'.$extension; 
      $newname="files/".$image_name; 
      $copied = copy($_FILES['photos']['tmp_name'][$name], $newname); 
      if (!$copied) 
      { 
       ?> 
       <h4>Copy unsuccessfull!</h4> 
       <?php 
       $errors=1; 
      } 

     } 

    } 
    //echo "Images uploaded successfully"; 
} 
//mysql_close($dbhandle); 
?> 
+1

के लिए टूटा लिंक स्टैक ओवरफ़्लो में आपका स्वागत है! हालांकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, यह स्पष्टीकरण भी शामिल करना बेहतर होगा। –

+0

क्या समस्या है, मुझे मिला ** चेतावनी: प्रतिलिपि(): फ़ाइल नाम '$ प्रतिलिपि = प्रतिलिपि में $ खाली नहीं हो सकता है ($ _ FILES ['photos'] ['tmp_name'] [$ name], $ newname);' – Sandesh

0

कोई सरणी कार्य भी बनाना पसंद नहीं करेगा? तो वह क्या कर सकता है

$images = array(); 

फिर उसके रूप में छवि सूची बटन में एक जोड़ जोड़ें? वहां से वह बस जितनी चाहें उतनी छवियों को जोड़ता रहता है और फिर सरणी पर फिर से सक्रिय होता है और डेटाबेस में जोड़ता है?

संबंधित मुद्दे