2009-06-23 20 views
0

Hier ist der Code, den ich verwende. Ich kann nicht sehen, wo das Problem ist - es bedeutete, mehrere Dateien auf Out-ups zu laden. Das lustige ist, dass es manchmal nur eine Datei hochlädt und dann nichts hochlädt.Problem beim Hochladen mehrerer Dateien

Kann mir jemand darum kümmern helfen bitte ..

<pre><code> 
<?php 

/*** the upload directory ***/ 
$upload_dir= './uploads'; 

/*** numver of files to upload ***/ 
$num_uploads = 5; 

/*** maximum filesize allowed in bytes ***/ 
$max_file_size = 999999951200; 

/*** the maximum filesize from php.ini ***/ 
$ini_max = str_replace('M', '', ini_get('upload_max_filesize')); 
$upload_max = $ini_max * 99999991024; 

/*** a message for users ***/ 
$msg = 'Please select files for uploading'; 

/*** an array to hold messages ***/ 
$messages = array(); 

/*** check if a file has been submitted ***/ 
if(isset($_FILES['userfile']['tmp_name'])) 
{ 
    /** loop through the array of files ***/ 
    for($i=0; $i < count($_FILES['userfile']['tmp_name']);$i++) 
    { 
     // check if there is a file in the array 
     if(!is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) 
     { 
      $messages[] = 'No file uploaded'; 
     } 
     /*** check if the file is less then the max php.ini size ***/ 
     elseif($_FILES['userfile']['size'][$i] > $upload_max) 
     { 
      $messages[] = "File size exceeds $upload_max php.ini limit"; 
     } 
     // check the file is less than the maximum file size 
     elseif($_FILES['userfile']['size'][$i] > $max_file_size) 
     { 
      $messages[] = "File size exceeds $max_file_size limit"; 
     } 
     else 
     { 
      // copy the file to the specified dir 
      if(@copy($_FILES['userfile']['tmp_name'][$i],$upload_dir.'/'.$_FILES['userfile']['name'][$i])) 
      { 
       /*** give praise and thanks to the php gods ***/ 
       $messages[] = $_FILES['userfile']['name'][$i].' uploaded'; 
      } 
      else 
      { 
       /*** an error message ***/ 
       $messages[] = 'Uploading '.$_FILES['userfile']['name'][$i].' Failed'; 
      } 
     } 
    } 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<title>Multiple File Upload</title> 
</head> 

<body> 

<h3><?php echo $msg; ?></h3> 

<p> 
<?php 
if(sizeof($messages) != 0) 
{ 
    foreach($messages as $err) 
    { 
     echo $err.'<br />'; 
    } 
} 
?> 
</p> 

<form enctype="multipart/form-data" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> 
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $upload_max; ?>" /> 
<?php 
$num = 0; 
while($num < $num_uploads) 
{ 
    echo '<div><input name="userfile[]" type="file" /></div>'; 
    $num++; 
} 
?> 
<input type="submit" value="Upload" /> 
</form> 

</body> 
</html> 

</code></pre> 
+0

Behandeln Sie Ihre Eingabe [Datei] -Felder als ein Array? z.B. . – anddoutoi

+0

Ja, ich behandle es als ein Array, ich weiß nicht, es ist nicht richtig auf dieser Website angezeigt :(Ich werde versuchen, den Code erneut formatieren ... –

+0

Ahh, es war das Format des Codes, der mich = P sorry – anddoutoi

Antwort

1

Zunächst einmal verwenden Kopie nicht(), um die Dateien zu verschieben. Dafür gibt es eine Funktion namens move_uploaded_file() Diese Funktion prüft, ob die Datei wirklich hochgeladen wurde und verhindert das Verschieben von Dateien, die nicht verschoben werden sollen.

2. Sehen Sie sich den Fehlerwert jeder hochgeladenen Datei an, da beim Hochladen möglicherweise Fehler auftreten.

Aktualisierung.

Versuchen Sie, Ihre Lösung auf das Wesentliche zu reduzieren. Überspringen Sie die Fehlerberichterstattung, bis sie funktioniert. Es hilft Ihnen zu wissen, was das genaue Fleisch und die Kartoffeln des Codes sind und hilft Ihnen, dieses Teil gut zu arbeiten, bevor Sie die möglichen Fehler umgehen.

2. Aktualisierung.

Hier ist eine minimierte Version Ihres Codes. Für mich geht das.

http://cznp.com/1032712.phps

Was ich auch zu tun hatte, ist es, den Ordner mache ich für meine Web-Server tun beschreibbaren schreibe.

+0

Danke Olafur, es ist kein Fehler gemeldet.Es bringt mich wirklich sauer :(Ich hasse es, wenn Code nicht laufen und keine Fehler. –

+0

Aweeeeeeeesome Zeug :) :) Sie sind ein Lebensretter. Was war falsch an meinem Code? –

+0

Sie haben move_uploaded_file nicht verwendet, nehme ich an. Die Erholung war ziemlich gleich. –

Verwandte Themen