我的文件表单元素非常简单:

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

但是,在上传文件时(上传正常),我尝试获取MIME类型,但每个文件都是相同的:
$form->archivo->getMimeType()

无论我尝试上传哪种文件,它总是返回application / octet-stream。

为什么会发生这种情况,我错过了什么吗?谢谢

最佳答案

造成这种情况的最可能原因是,如果PHP安装中没有fileinfo或mime_magic扩展名,则您所使用的基础方法将回退到默认的mimetype:

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

建议您检查Zend_File_Transfer_Adapter_Abstract中的getMimeType()方法(该片段来自Zend_Form_Element_File::getMimeType()并在其中调用)以获取详细信息,然后检查已安装的扩展名并进行适当的纠正。

10-01 18:23