2010-03-03 15 views
2

mon élément de forme de fichier est très simple:Fichier-> getMimeType() retourne toujours application/octet-stream avec Zend Framework

$this->archivo = new Zend_Form_Element_File('archivo'); 
$this->archivo->setLabel('Archivo:') 
     ->setRequired(true) 
     ->setDestination(UPLOAD_PATH) 
     ->addValidator('Count', false, 1) 
     ->addValidator('Size', false, MAX_FILE_SIZE) 
     ->addValidator('Extension', false, Application_Form_Multimedia_SubirArchivo::EXTENSIONES_PERMITIDAS); 
$this->addElement($this->archivo); 

mais, lors du téléchargement des fichiers (upload OK), je tente d'obtenir le le type MIME, mais pour chaque fichier est le même:

$form->archivo->getMimeType() 

Il retourne toujours application/octet-stream, peu importe quel type de fichier que je suis en train de télécharger. Pourquoi est-ce que ça arrive, est-ce que j'ai manqué quelque chose dans le chemin? Merci

Répondre

4

La raison la plus probable est que si ni le fileinfo ou extensions mime_magic sont disponibles dans votre installation de PHP, la méthode sous-jacente que vous utilisez vont passer en mode mimetype par défaut:

if (empty($result[$key])) { 
    $result[$key] = 'application/octet-stream'; 
} 

Suggérer vous vérifiez la méthode getMimeType() dans Zend_File_Transfer_Adapter_Abstract - d'où provient cet extrait et appelé depuis Zend_Form_Element_File :: getMimeType() - pour plus de détails, puis vérifiez quelles extensions vous avez installées et rectifiez de manière appropriée.

+0

finfo est le chemin à parcourir. –

0

Un Octet-Stream est généralement n'importe quel fichier qui doit être ouvert dans une autre application. Voir:

http://kb.iu.edu/data/agtj.html

Une pièce jointe MIME avec le contenu de type "application/de flux d'octets" est un fichier binaire . Généralement, il s'agit d'une application ou d'un document qui doit être ouvert dans une application, par exemple un tableur ou un traitement de texte. Si la pièce jointe est associée à l'extension , vous pouvez indiquer le type de fichier . Une extension .exe , par exemple, indique que est un programme Windows ou DOS (exécutable), tandis qu'un fichier se terminant par .doc est probablement destiné à être ouvert dans Microsoft Word.

3

aujourd'hui Zend Framework est 1.11.10 et la résolution de ce problème n'est pas rétroportée de ZF2. voici bug report.

here is the patch. l'idée du patch est que dans php5.3 mimefile est inclus avec php et nous n'avons plus besoin de fichier externe.

aussi, d'utiliser ce correctif, vous devez ajouter validateur comme ceci:

$upload->addValidator('IsImage', false, array('magicfile'=>false)); 
+0

Bonne réponse. Mon problème était certainement obsolète ZF1 'Zend_Validate_File_MimeType'. J'adore supprimer des lignes de code pour résoudre un problème. – ficuscr