2016-07-22 14 views
0

ich eine Website, wo ein Benutzer ein Bild hochladen (die vor perfekt ein paar Tagen gearbeitet, und ich habe nicht einmal etwas zu dem Upload im Zusammenhang ändern)PHP Upload nicht funktioniert, keinen Fehler

Der Eigentümer Datei ist Stellen Sie auf www-data und ich habe auch mit der Erlaubnis 777 versucht, so dass sollte nicht der Grund sein, dass es nicht funktioniert.

enctype/Daten usw. eingestellt sind auch

Dies ist der Code:

switch ($_FILES['upload']['error']) { 
      case UPLOAD_ERR_OK: 
       $msg="There is no error, the file uploaded with success."; 
       break; 
      case UPLOAD_ERR_INI_SIZE: 
       $msg="The uploaded file exceeds the upload_max_filesize directive in php.ini."; 
       break; 
      case UPLOAD_ERR_FORM_SIZE: 
       $msg="The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form."; 
       break; 
      case UPLOAD_ERR_PARTIAL: 
       $msg="The uploaded file was only partially uploaded."; 
       break; 
      case UPLOAD_ERR_NO_FILE: 
       $msg="No file was uploaded."; 
       break; 
      case UPLOAD_ERR_NO_TMP_DIR: 
       $msg="Missing a temporary folder. Introduced in PHP 5.0.3."; 
       break; 
      case UPLOAD_ERR_CANT_WRITE: 
       $msg="Failed to write file to disk. Introduced in PHP 5.1.0."; 
       break; 
      default: 
       $msg="unknown error with upload"; 
     } 
     echo("<script>console.log('".$msg."'); </script>"); 


     //process image 
     if($_FILES['upload']['tmp_name']!=null){ 
      $imgPath="../assets/img/horses/horse".$id.".jpg"; 
      if((bool)getimagesize($_FILES["upload"]["tmp_name"])){ 
       $writeimage = fopen($imgPath, "w"); 
       if(!move_uploaded_file($_FILES["upload"]["tmp_name"], $imgPath)){ 
        echo("<script>console.log('couldn't move img');</script>"); 
       } else{ 
        echo("<script>console.log('image uploaded');</script>"); 
       } 
       fclose($writeimage); 
      } else{ 
       echo(" <div class='alert alert-warning' id='notSaved' style='margin-top:20px;'> 
          Fehler: Die Datei die hochgeladen werden soll, scheint kein Bild zu sein. 
         </div>"); 
      } 
     } 

Der Ausgang ist
"kein Fehler vorhanden ist, wird die Datei mit Erfolg hochgeladen
Bild hochgeladen.."
aber die Datei ändert sich nicht/erscheint auf dem Server.

Auch ich kann wahrscheinlich die Zeilen löschen $ wrikeimage = fopen ($ imgPath, "w"); und fclose ($ writeImage), kann ich nicht?

+0

Sie haben Ihre Logik bekam drehte sich um: 'move_uploaded_file()' 'kehrt true' auf Erfolg. – jeroen

+0

gemäß Ihrer Wenn-Bedingung, die Sie mit einem Fehler konfrontiert sind, dass, warum es gibt Nachricht Bild hochgeladen nur diese Nachrichten geändert und debuggen –

Antwort

0

In Ihrem Code, kann ich sehe ein Problem.

//process image 
if($_FILES['upload']['tmp_name']!=null){ 
    $image="../assets/img/horses/horse".$id.".jpg"; 
    if((bool)getimagesize($_FILES["upload"]["tmp_name"])){ 
     $writeimage = fopen($imgPath, "w"); 
     if(move_uploaded_file($_FILES["upload"]["tmp_name"], $imgPath)){ 
      echo("<script>console.log('couldn't move img');</script>"); 
     } else{ 
      echo("<script>console.log('image uploaded');</script>"); 
     } 
     fclose($writeimage); 
    } else{ 
     echo(" <div class='alert alert-warning' id='notSaved' style='margin-top:20px;'> 
        Fehler: Die Datei die hochgeladen werden soll, scheint kein Bild zu sein. 
       </div>"); 
    } 
} 

Überprüfen Sie bitte, wo ist, $ imgPath Variable definiert? es sollte $ image sein. Keine Notwendigkeit fopen zu verwenden und fclose

Ihre cose shouled Also ...

if($_FILES['upload']['tmp_name']!=null){ 
    $image="../assets/img/horses/horse".$id.".jpg"; 
    if((bool)getimagesize($_FILES["upload"]["tmp_name"])){ 
     if(move_uploaded_file($_FILES["upload"]["tmp_name"], $image)){ 
      echo("<script>console.log('couldn't move img');</script>"); 
     } else{ 
      echo("<script>console.log('image uploaded');</script>"); 
     } 
    } else{ 
     echo(" <div class='alert alert-warning' id='notSaved' style='margin-top:20px;'> 
        Fehler: Die Datei die hochgeladen werden soll, scheint kein Bild zu sein. 
       </div>"); 
    } 
} 
+0

yeah der $ imgPath Tippfehler war das Problem, muss es versehentlich geändert haben ^^ – Juliette

+0

Ok kein Problem .. Gib auch Abstimmung auf ... Danke –

+0

Es gibt noch ein paar kleinere Probleme hier (Siehe meine Antwort).Wenn Sie Ihre Konsole öffnen, werden Sie feststellen, dass "img nicht verschieben" angezeigt wird, obwohl das Bild erfolgreich verschoben wurde (oder ein Fehler angezeigt wird, weil Ihre Anführungszeichen nicht gut maskiert sind). – BeetleJuice

0

Dieser Abschnitt ist problematisch

$writeimage = fopen($imgPath, "w"); 
if(move_uploaded_file($_FILES["upload"]["tmp_name"], $imgPath)){ 
    echo("<script>console.log('couldn't move img');</script>"); 
} else{ 
    echo("<script>console.log('image uploaded');</script>"); 
} 
fclose($writeimage); 

Rufen Sie nicht fopen auf einem Pfad, in dem Sie erwarten, dass andere Dateioperationen auszuführen. Außerdem haben Sie Ihre Logik in der if Überprüfung auf den Kopf gestellt. Wenn der Umzug erfolgreich ist, loggen Sie sich "konnte nicht bewegen img". Verwenden Sie stattdessen:

if(!move_uploaded_file($_FILES["upload"]["tmp_name"], $image)){ 
    echo '<script>console.log("couldn\'t move img");</script>'; 
} else{ 
    echo '<script>console.log("image uploaded");</script>'; 
} 

Hinweis hatte man auch ein paar andere Fragen, die ich hier festgelegt haben.

  1. Sie haben keine Zitate richtig in echo entkommen,
  2. Sie verwendeten Klammern mit echo (Sie sollten nicht)
  3. Sie schaltet $image zu $imgPath
+0

Was ist los mit meinen Anführungszeichen? Die Echos funktionieren immer gut – Juliette

+0

@Juliette Schauen Sie sich diese Saite an, aus Ihrem ursprünglichen Code: ''konnte sich nicht bewegen img'' Wo endet es? Es gibt keine Möglichkeit für einen Parsing-Algorithmus zu wissen, dass das Zitat nach 'couldn' die Zeichenfolge nicht beenden sollte. Im Allgemeinen können Sie das Anführungszeichen am Anfang und Ende eines Strings innerhalb des Strings nicht verwenden, es sei denn, Sie entziehen es. Deshalb habe ich 'couldn \ 't' – BeetleJuice

Verwandte Themen