2017-04-30 5 views
1

Pour une raison quelconque le type d'image affiche comme "application/.png" dans IE 7 et Edge, mais "image/png" dans Chrome et Firefox. J'ai essayé plusieurs images différentes, les jpeg font la même chose. Est-ce normal? Dois-je inclure un ou une déclaration à compte pour le "application/png"? Ou est-ce que je fais quelque chose de mal?application de type image PHP/.png

 if ((($screenshot_type == 'image/gif') || ($screenshot_type == 'image/jpeg') || 
     ($screenshot_type == 'image/pjpeg') || ($screenshot_type == 'image/png')) && 
     (($screenshot_size > 0) && ($screenshot_size <= GW_MAXFILESIZE))) { 
     if ($_FILES['screenshot']['error'] == 0) { 

     // Move the file to the targe upload folder 
     $target = GW_UPLOADPATH . $screenshot; 
     if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) { 
      // Connect to the database 
      $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) 
       or die('Unable to connect to databse'); 
      // Write the data to the database 
      $query = "INSERT INTO guitarwars VALUES (0, NOW(), '$name', '$score', '$screenshot')"; 
      mysqli_query($dbc, $query) 
       or die('Unable to complete query'); 

      // Confirm success with the user 
      echo '<p>Thanks for adding your new high score!</p>'; 
      echo '<p><strong>Name:</strong> ' . $name . '<br>'; 
      echo '<strong>Score:</strong> ' . $score . '</p>'; 
      echo '<img src="' . GW_UPLOADPATH . $screenshot . '" alt="Score image" /></p>'; 
      echo '<p><a href="index.php">&lt;&lt; Back to high scores</a></p>'; 

      // Clear the score data to clear the form 
      $name = ""; 
      $score = ""; 
      $screenshot = ""; 

      mysqli_close($dbc); 
     } 
     else { 
     echo '<p class="error">Sorry, there was a problem uploading your screen shot image.</p>'; 
     } 
    } 
    } 
    else { 
    echo '<p class="error">The screen shot must be a GIF, JPEG, or PNG image file no ' . 
     'greater than ' . (GW_MAXFILESIZE/1024) . ' KB in size.<br>' . $screenshot_size . '<br>' . $screenshot_type . '</p>'; 
    } 
+0

Vous feriez mieux de la case [extension de fichier, que pour le type mime] (http://stackoverflow.com/questions/7349473/php-file-upload-mime-or-extension-based-verification). – shaggy

Répondre

0

Différents navigateurs et systèmes d'exploitation fournissent différents types de mime. Vous devriez peut-être au lieu simplement utiliser http://php.net/getimagesize sur le fichier téléchargé, et activer getimagesizeresult de $ [2] avec des cas pour IMG_PNG, IMG_JPG, IMG_GIF et appliquer un type MIME approprié sur votre propre.