dosya-> getMimeType () her zaman Zend Framework ile application / octet-stream döndürür

3 Cevap php

benim dosya form elemanı çok basittir:

$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);

Dosyayı (yüklenenler OK) yüklerken ama, ben MIME türünü elde etmek için çalışın ama her dosya için aynıdır:

$form->archivo->getMimeType()

Her zaman olursa olsun ben yüklemeye çalışıyorum ne tür dosya, application/octet-stream döndürür.

Neden böyle oluyor, ben bir şekilde bir şey kaçırdım mı? Teşekkürler

3 Cevap

Bunun en muhtemel nedeni fileinfo veya mime_magic uzantıları ne PHP kurulum mevcuttur varsa, kullandığınız temel yöntem varsayılan bir mime türünde çare olacaktır:

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

Ayrıntılar için, ve sonra yüklediğiniz ne uzantıları kontrol edin ve uygun şekilde düzeltilmesi - o pasajı olduğunu ve Zend_Form_Element_File içinde denir :: getMimeType () - Eğer Zend_File_Transfer_Adapter_Abstract içinde getMimeType () yöntemi kontrol öneririz.

bugün Zend Framework 1.11.10 ve bu konuda çözünürlüğü ZF2 backported değildir. burada bug report.

here is the patch. yama fikri PHP5.3 mimefile içinde php ile birlikte ve biz `t artık dış dosyayı gerek yok olmasıdır.

Ayrıca, böyle bir doğrulayıcı eklemek gerekir bu düzeltmenin faydalanmak için:

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

Bir Sekizli-Stream genellikle başka bir uygulamada açıldığında gerekir herhangi bir dosya olduğunu. Bkz:

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

A MIME attachment with the content type "application/octet-stream" is a binary file. Typically, it will be an application or a document that must be opened in an application, such as a spreadsheet or word processor. If the attachment has a filename extension associated with it, you may be able to tell what kind of file it is. A .exe extension, for example, indicates it is a Windows or DOS program (executable), while a file ending in .doc is probably meant to be opened in Microsoft Word.