2017-06-08 3 views
0

Ceci est mon code php pour télécharger un fichier. Le code affiche un avis pour l'index identifié dans les lignes où les variables sont initiées. La sortie affichée est "Invalid File Extension" pendant que je télécharge un fichier jpeg.Obtention d'une erreur 'Extension de fichier invalide' lors du chargement d'un fichier image

<?php 


    if (isset($_POST["submit"])) { 

     $name  = $_FILES['file']['name']; 
     $tmpName = $_FILES['file']['tmp_name']; 
     $error = $_FILES['file']['error']; 
     $size  = $_FILES['file']['size']; 
     $ext  = strtolower(pathinfo($name, PATHINFO_EXTENSION)); 

     switch ($error) { 
      case UPLOAD_ERR_OK: 
       $valid = true; 
       //validate file extensions 
       if (!in_array($ext, array('jpg','jpeg','png','gif'))) { 
        echo $ext; 
        $valid = false; 
        $response = 'Invalid file extension.'; 
       } 
       //validate file size 
       if ($size/1024/1024 > 2) { 
        $valid = false; 
        $response = 'File size is exceeding maximum allowed size.'; 
       } 
       //upload file 
       if ($valid) { 
        $targetPath = dirname(__FILE__) . DIRECTORY_SEPARATOR. 'uploads' . DIRECTORY_SEPARATOR. $name; 
        move_uploaded_file($tmpName,$targetPath); 
        header('Location: index.php') ; 
        exit; 
       } 
       break; 
      case UPLOAD_ERR_INI_SIZE: 
       $response = 'The uploaded file exceeds the upload_max_filesize directive in php.ini.'; 
       break; 
      case UPLOAD_ERR_FORM_SIZE: 
       $response = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.'; 
       break; 
      case UPLOAD_ERR_PARTIAL: 
       $response = 'The uploaded file was only partially uploaded.'; 
       break; 
      case UPLOAD_ERR_NO_FILE: 
       $response = 'No file was uploaded.'; 
       break; 
      case UPLOAD_ERR_NO_TMP_DIR: 
       $response = 'Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3.'; 
       break; 
      case UPLOAD_ERR_CANT_WRITE: 
       $response = 'Failed to write file to disk. Introduced in PHP 5.1.0.'; 
       break; 
      case UPLOAD_ERR_EXTENSION: 
       $response = 'File upload stopped by extension. Introduced in PHP 5.2.0.'; 
       break; 
      default: 
       $response = 'Unknown error'; 
      break; 
     } 

     echo $response; 
    } 
    ?> 

Le fichier HTML est comme suit:

<html> 
    <body> 
    <form method = "post" action = "upload.php"> 
     <input type="file" name="file"> 
     <input type="submit" value="Upload Image" name="submit"> 
    </form> 
    </body> 
</html> 
+0

Vérifiez ce que votre 'ext' $ contient? –

+0

Lorsque j'essaie d'imprimer la valeur de ces variables, il n'imprime rien, @MayankPandeyz –

+0

essayez d'ajouter un attribut enctype = "multipart/form-data" dans le tag de formulaire –

Répondre

0

Ajoutez l'attribut enctype="multipart/form-data" dans la balise formulaire pour envoyer des fichiers avec le formulaire

+0

L'erreur est résolue, mais le fichier n'est pas téléchargé dans le répertoire mentionné @Daniyal –

+0

changé le répertoire de téléchargement @ManyaAgarwal – Daniyal

+0

ne fait aucune différence, le chemin existe. –