2016-11-11 7 views
-1

Ich lade mehrere Dateien in den Ordner mit PHP. Nachdem das Hochladen abgeschlossen ist, erhalte ich eine Browser-Nachricht für jede hochgeladene Datei. Meine Frage ist, wie kann ich nur Nachricht für alle, wenn abgeschlossen und wenn es einen Fehler gab nur zeigen, welche Dateien nicht hochgeladen. hier ist mein Skript unten, und Dank im Vorausecho Nachricht, dass alle Dateien hochgeladen wurden

<?php 

// Count # of uploaded files in array 
$total = count($_FILES['filesToUpload']['name']); 

// Loop through each file 
for ($i = 0; $i < $total; $i++) { 
    //Get the temp file path 
    $tmpFilePath = $_FILES['filesToUpload']['tmp_name'][$i]; 

    //Make sure we have a filepath 
    if ($tmpFilePath != "") { 
     //Setup our new file path 
     $newFilePath = "./upimages/" . $_FILES['filesToUpload']['name'][$i]; 

     //Upload the file into the temp dir 
     if (move_uploaded_file($tmpFilePath, $newFilePath)) { 
      ?><script>alert('successfully uploaded');</script><?php 
     } else { 
      ?><script>alert('error while uploading file');</script><?php 
     } 
    } 
} 
?> 

Antwort

1

Nur eine einfache Variable $error und $succes machen. Sie können diese nach der Angelegenheit anzeigen (wenn Ihre Schleife endet). Ich habe jetzt jeden Fehler und Erfolg einzeln gedruckt, Sie können mit diesen Arrays machen, was Sie wollen.

<?php 

$total = count($_FILES['filesToUpload']['name']); 
$succes = []; 
$error = []; 
for($i=0; $i<$total; $i++) { 
    $tmpFilePath = $_FILES['filesToUpload']['tmp_name'][$i]; 
    if ($tmpFilePath != ""){ 
    $newFilePath = "./upimages/" . $_FILES['filesToUpload']['name'][$i]; 
     if(move_uploaded_file($tmpFilePath, $newFilePath)) { 
      $succes[$_FILES['filesToUpload']['name'][$i]] = true; 
     }else{ 
      $errors[$_FILES['filesToUpload']['name'][$i]] = true; 
     } 
    } 
} 
foreach(array_keys($succes) as $suc){ 
    echo $suc." was succesfull"; 
} 
foreach(array_keys($errors) as $error){ 
    echo $error." failed to upload"; 
} 

?> 
+0

i empfangen wurde 'Fehlerverarbeitungsfehler: Syntaxfehler, unerwartete 'für' (T_FOR) in /data/9/3/62/77/3714077/user/4129685/htdocs/trial1.php auf Linie 6 ' – INOH

+1

@INOH vergessen sie die fehlende Schließung auf' $ error = [] ', bearbeitete ich die Antwort. Lade es neu und versuche es noch einmal. Sie sollten das btw erwischt haben und etwas zu beachten, wenn Sie PHP lernen. –

+1

@Nytrix muss etwas vorsichtiger sein und keine wichtige Verschlusssyntax verpassen. Manchmal wissen die Leute nicht, wie sie damit umgehen sollen und Fehler. ;-) –

0

Sie so etwas wie dies versuchen könnte, wenn Sie noch mit Warnungen tun sie haben wollen, die Namen der Dateien auf eine Variable übergibt nach Erfolg oder scheitern, und sie in Ihrer Warnung, sobald Sie die for-Schleife verlassen .

$successfulmsg="Successfully uploaded: "; 
    $failedmsg="error while uploading files: "; 
      // Loop through each file 
for($i=0; $i<$total; $i++) { 
//Get the temp file path 
$tmpFilePath = $_FILES['filesToUpload']['tmp_name'][$i]; 

//Make sure we have a filepath 
if ($tmpFilePath != ""){ 
//Setup our new file path 
$newFilePath = "./upimages/" . $_FILES['filesToUpload']['name'][$i]; 

//Upload the file into the temp dir 
if(move_uploaded_file($tmpFilePath, $newFilePath)) { 

      $successfulmsg.=$_FILES['filesToUpload']['name'][$i]; 


    } 
    else 
    { 
     $failedmsg.=$_FILES['filesToUpload']['name'][$i]; 
    } 
    }  
} 

echo '<script>alert("'.$successfulmsg.'. And '.$failedmsg.'")</script>'; 
Verwandte Themen