2012-04-14 17 views
1

Ich habe eine JavaScript-Funktion auf einer Seite und auf einer anderen Seite Ich habe ein PHP-Skript, das sich auf das Hochladen von Dateien konzentriert. Im Moment werden meine Dateien erfolgreich hochgeladen, was eine großartige Nachricht ist. Meine Frage ist jedoch, dass ich den PHP verwenden möchte, um zu überprüfen, ob eine Datei bereits in dem Ordner vorhanden ist, aber ich möchte die JavaScript-Funktion verwenden, um eine Meldung anzuzeigen, die Datei bereits vorhanden ist, wenn das wahr ist. Wie kann das gemacht werden?Wie man eine Nachricht anzeigt, wenn die Datei bereits existiert

Unten ist der PHP-Code, der überprüft, ob die Datei vorhanden ist:

if (file_exists("upload/" . $_FILES["fileImage"]["name"])) 
    { 

    } 

Unten ist die Javascript-Funktion, wenn das Hochladen von Dateien stoppen. Wenn die Datei nicht hochgeladen wird, wird eine Meldung angezeigt, die besagt, dass beim Hochladen der Datei ein Fehler aufgetreten ist. Wenn die Datei erfolgreich hochgeladen wurde, wird eine zusätzliche Nachricht angezeigt, wenn die Datei nicht hochgeladen wird, aber die Datei existiert bereits, dann möchte ich eine Meldung anzeigen, dass die Datei bereits existiert.

function stopImageUpload(success){ 
      var result = ''; 
      if (success == 1){ 
      result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>'; 
      } 
      else { 
      result = '<span class="emsg">There was an error during file upload!</span><br/><br/>'; 
      } 
} 

P. S Bitte niemanden in ihrer Antwort stellen, warum ich nicht nur ein Echo in dem PHP-Code setzen, will ich es nicht so tun, weil der Benutzer nie navigiert tatsächlich auf den PHP-Skript.

+0

Verwenden Sie Ajax vor dem Senden, um zu überprüfen, ob die Datei bereits vorhanden ist oder verwenden Sie den Ajax-Upload vollständig. Oder die beste Lösung ist, wenn Datei existiert, schreibe neue hochgeladene Datei mit anderem Namen wie: 'filename2, filename3' und etc – safarov

+0

@safarov Können Sie mir ein Beispiel einer Funktion zeigen, um zu sehen, ob Datei bereits existiert, dann schreibe anderen Namen für neue hochgeladene Datei? – user1324106

Antwort

1

In Ihren PHP-Code, der überprüft, ob die Datei

else{ 
echo 2; 
} 

In Ihren JS-Code in anderen clausule tut existiert tun

if(success == 2){ 
result = '<span class="emsg">File already exist!</span><br/><br/>'; 
} 

, die eine schnelle Lösung, aber es gibt Ihnen eine Möglichkeit zu tun komplexere Dateiverwaltung über JS/PHP. Beispielsweise. Wenn PHP eine Daten 1 zurückgibt, dann ist alles in Ordnung, wenn 2 dann Datei existiert, wenn 3 dann Datei zu groß ist, wenn 4 dann Datei mit schlechter Erweiterung, wenn 5 dann etwas anderes, und so weiter.

Diese Methode habe ich beim Lernen von C/C++ kennengelernt (in C ist das wie eine Standard-Sache). Auf diese Weise können Sie Informationen darüber geben, wie einige Teile des Codes gelaufen sind.

Noch würde ich einen zufälligen Namen für Datei generieren, wenn der Name irrelevant ist, und wenn der Name der Datei wichtig ist dann wold AJAX verwenden, um es zu überprüfen und Informationen darüber anzuzeigen, oder vielleicht eine Zahl nach dem Dateinamen anhängen (Datei (1) .xyz, Datei (2) .xyz, Datei (3) .xyz). Das hängt davon ab, was Sie erreichen möchten.

1

Sie sagen.

PS Bitte niemanden in ihrer Antwort stellen, warum ich nicht nur ein Echo in Code des PHP setze, will ich es nicht so tun, weil der Benutzer nie tatsächlich auf den PHP-Skript navigiert .

Sie müssen sowieso einige PHP-Code ausführen. also wirst du das auf die eine oder andere Weise machen müssen. Zeigen Sie dann die Informationen dem Benutzer auf die von Ihnen gewünschte Weise an.

Da wir nicht den ganzen Code haben, nehme ich an, Sie haben eine Eingabe [Typ = Datei] im HTML-Code, so dass Sie Ajax mit dem Wert der Eingabe verwenden müssen. sende es an deinen Server, überprüfe, ob der Dateiname bereits existiert, antworte dann mit true oder false mit ajax von php und führe den Code in Javascript aus, der dem Benutzer sagt, ob die Datei existiert oder nicht. Sie können jQuery zu tun, dass:

 $("#myInput").on("change",function(event){ 
      $.getJSON("checkFileService.php",{filename:$(event.currentTarget).val()}, 
     function(datas){ 
     if(datas.exists === true){ 
      doSomething(); 
     else{ 
      doSomethingElse(); 
     } 
     } 
     } 

Überprüfen Sie die jQuery Ajax-api für mehr Infos

Sie ein PHP-Skript, das wie einige JSON-String ausgibt schreiben müssen { "existiert": true} in Reihenfolge für das Clientskript zu funktionieren.

1

@safarov Können Sie mir ein Beispiel einer Funktion zeigen, um zu sehen, ob die Datei bereits existiert, und dann einen anderen Namen für die neue hochgeladene Datei schreiben?

Save/eine einfache Textdatei mit dem Namen "filenamecounter.txt", enthält nur Text 1 in hochladen.

<?php 
    //Get the original name of file 
    $tmp_name = $_FILES["filename"]["tmp_name"]; 

    //Get/Read File Name Counter 
    $filenamecounter = file_get_contents('filenamecounter.txt'); 

    //If it is less than 10, add a "0"/Zero to make it like 01,02,03 
    if (strlen($filenamecounter) <= 1){ 
     $filenamecounter = str_pad($filenamecounter, 2, '0', STR_PAD_LEFT); 
     } 

    //Assign Filename + Variable 
    $name = "filename".$filenamecounter.".txt"; 

    //Save file with new name 
    move_uploaded_file($tmp_name, $name); 

    //write quotecounter to file. 
    $filenamecounter++; 
    file_put_contents("filenamecounter.txt", $filenamecounter); 
?> 
Verwandte Themen