2011-01-27 5 views
1

S'il vous plaît jeter un oeil à ceci: http://phpbin.net/x/1841090478PHP: Comment mettre en œuvre exif_imagetype dans ce code

Maintenant, je suis en train d'étendre ce code et ajouter plus de dames, comme exif_imagetype() comme vous pouvez le voir sur la ligne 139.

Je ne peux pas le faire fonctionner, Im juste recevoir que exif_imagetype a échoué à ouvrir le flux, pas un tel ... (que l'image n'existe pas). J'ai aussi essayé $ this-> file-> getName() dans le paramètre, mais toujours la même erreur.

Maintenant, je questionne le tout. Je ne peux pas voir où l'image est téléchargée avant qu'elle ne parvienne au fichier if ($ this-> file-> save .. mais comment peut-elle récupérer pathinfo() then? Et pourquoi wont ['dirname']. ['Basename'] trouver le fichier ne fonctionne pas? pour le nom de répertoire je reçois juste un, mais le nom de base je reçois le nom de fichier image correcte que je suis en train de télécharger

Alors comment ça marche et où devrais-je implémenter ce vérificateur exif_imagetype dans ce code ?

Nous vous remercions à l'avant

+0

Pouvez-vous poster le code que vous utilisez pour implémenter cette classe? – diagonalbatman

+0

Je l'utilise avec une requête d'appel ajax en javascript. Est-ce ce que vous voulez voir? C'est un plugin javascript et je ne fais que définir les paramètres et où il devrait faire une demande. – Karem

Répondre

3

Juste une mise en œuvre rapide et sale pour le cas XHR (comme indiqué dans le chat).

/** 
* Handle file uploads via XMLHttpRequest 
*/ 
class qqUploadedFileXhr { 
    protected $_tempFile; 

    public function __construct() { 
     $input = fopen("php://input", "r"); 
     $this->_tempFile = tempnam(sys_get_temp_dir(), 'xhr_upload_'); 
     file_put_contents($this->_tempFile, $input); 
     fclose($input); 
    } 

    public function checkImageType() { 
     switch(exif_imagetype($this->_tempFile)) { 
      case IMAGETYPE_GIF: 
      case IMAGETYPE_JPEG: 
      case IMAGETYPE_PNG: 
       return true; 
       break; 
      default: 
       return false; 
       break; 
     } 
    } 

    /** 
    * Save the file to the specified path 
    * @return boolean TRUE on success 
    */ 
    function save($path) { 
     if (filesize($this->_tempFile) != $this->getSize()){   
      return false; 
     } 
     rename($this->_tempFile, $path); 
     return true; 
    } 
    function getName() { 
     return $_GET['qqfile']; 
    } 
    function getSize() { 
     if (isset($_SERVER["CONTENT_LENGTH"])){ 
      return (int)$_SERVER["CONTENT_LENGTH"];   
     } else { 
      throw new Exception('Getting content length is not supported.'); 
     }  
    } 
} 
Questions connexes