2010-10-20 24 views
7

का उपयोग कर एकाधिक फाइल लोड करें मैं एचटीएमएल 5 का उपयोग कर कई फाइल लोड करने की कोशिश कर रहा हूं। यह मेरा कोड है जो मुझे कुछ साइट पर मिला है। PHP कोड में यह इसे एक सरणी के रूप में नहीं पहचानता है।एचटीएमएल 5 और PHP

क्या मैं कुछ गलत कर रहा हूं? क्या कोई मुझे एक कामकाजी समाधान दिखा सकता है?

धन्यवाद।

index.html

<form action='save.php' method='post' enctype='multipart/form-data'> 
<input name="uploads" type="file" multiple="multiple" /> 
<input type='submit' value="Upload File"> 
</form> 

save.php

function GetFiles() { 
     $files = array(); 
     $fdata = $_FILES["uploads"]; 
     if (is_array($fdata["name"])) {//This is the problem 
       for ($i = 0; $i < count($fdata['name']); ++$i) { 
         $files[] = array(
          'name' => $fdata['name'][$i], 
          'tmp_name' => $fdata['tmp_name'][$i], 
         ); 
       } 
     } else { 
       $files[] = $fdata; 
     } 

     foreach ($files as $file) { 
       // uploaded location of file is $file['tmp_name'] 
       // original filename of file is $file['file'] 
     } 
} 
+0

नीचे जवाब सही ढंग से समस्या हल हो गया है, और यहाँ एक पूरा काम कर उदाहरण है कि मदद कर सकता है के साथ एक पृष्ठ है किसी और जो यह पेज पर ठोकर: http://tiffanybbrown.com/2011/03/29/quick -php-tip-uploading-multiple-files-in-html5/ –

उत्तर

8

आप नाम की सरणी के कुछ प्रकार बनाने की जरूरत है।

+0

धन्यवाद! वह चाल है। :) –

5

प्रपत्र चर कि सरणियों एक [] साथ नामित किया जाना चाहिए, अन्यथा पीएचपी एक सरणी के रूप में नहीं देखा है। तो:

<form action='save.php' method='post' enctype='multipart/form-data'> 
<input name="uploads[]" type="file" multiple="multiple" /> 
<input type='submit' value="Upload File"> 
</form> 

इसे करना चाहिए।

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

वैसे ही जैसे आप जब चेक बॉक्स का उपयोग कर करते थे:

1

मुझे पता है कि यह एक पुराना धागा है, लेकिन मैं इस छोटे स्क्रिप्ट का उपयोग $ _FILES सरणी के भ्रमित लेआउट को (और मेरे लिए) और अधिक पठनीय रूप में बदलने के लिए करता हूं। Name_input जो भी नाम आपने HTML में इनपुट ऑब्जेक्ट को दिया है।

for($i=0; $i<count($_FILES['name_input']['name']); $i++) { 
    $betterfiles[] = array(
     "name" => $_FILES['name_input']['name'][$i], 
     "type" => $_FILES['name_input']['type'][$i], 
     "tmp_name" => $_FILES['name_input']['tmp_name'][$i], 
     "error" => $_FILES['name_input']['error'][$i], 
     "size" => $_FILES['name_input']['size'][$i] 
    ); 
} 
संबंधित मुद्दे