2010-03-03 3 views
2

내 파일 형태 요소와 응용 프로그램/octet-stream을입니다 반환파일 -> getMimeType()는 항상 매우 간단 젠드 프레임 워크

$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); 
파일 (업로드 OK)을 업로드 할 때

하지만, 난을 얻으려고 MIME 타입하지만 모든 파일은 동일합니다 :

$form->archivo->getMimeType() 

항상 내가 업로드하기 위해 노력하고있어 파일의 종류에 상관없이 응용 프로그램/octet-stream을을 반환합니다.

왜 이런 일이 발생 했습니까? 감사합니다

답변

4

이에 대한 가능성이 가장 높은 이유는에서는 FileInfo 또는 mime_magic 확장도 당신의 PHP 설치에서 사용할 수있는 경우, 당신이 사용하고있는 기본 방법은 기본 마임으로 폴백 것입니다 :

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

추천 검색어 자세한 내용은 Zend_File_Transfer_Adapter_Abstract 내의 getMimeType() 메소드를 확인하십시오. 자세한 내용은 Zend_Form_Element_File :: getMimeType()에서 가져온 것입니다. 그런 다음 확장 기능을 설치하고 올바르게 수정했는지 확인하십시오.

+0

finfo가 갈 수있는 방법입니다 또한

는이 같은 유효성 검사기를 추가해야이 수정 프로그램의 사용을 확인합니다. –

0

일반적으로 Octet-Stream은 다른 응용 프로그램에서 열어야하는 파일입니다. 참조 :

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

내용 유형 "응용 프로그램/octet-stream을"있는 MIME 첨부 파일이 이진 파일입니다. 일반적으로 응용 프로그램이나 스프레드 시트 또는 워드 프로세서와 같이 응용 프로그램에 열려있는 이어야하는 문서가됩니다. 첨부 파일의 첨부 파일 이름이 인 경우 은 어떤 파일인지 알 수 있습니다. 예를 들어, .exe 확장자는 이 Windows 또는 DOS 프로그램 인 (실행 가능) 인 반면, .doc로 끝나는 파일은 Microsoft Word에서 열리는 것을 의미합니다.

3

오늘 Zend Framework는 1.11.10이며이 문제는 ZF2에서 백 포트되지 않습니다. 여기에 bug report입니다.

here is the patch. 패치의 아이디어는 php5.3에서 mimefile이 php에 포함되어 있으며 더 이상 외부 파일을 필요로하지 않는다는 것입니다.

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

좋은 답변입니다. 내 문제는 확실히 ZF1'Zend_Validate_File_MimeType'보다 오래되었습니다. 문제를 해결하기 위해 코드 줄 삭제하기. – ficuscr