示例#1
0
 /**
  *
  * 获取文件类型
  */
 public function getType()
 {
     if (!$this->filetype) {
         $image_mime = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/bmp', 'image/x-ms-bmp', 'image/x-bmp', 'image/vnd.wap.wbmp', 'image/tiff', 'image/vnd.microsoft.icon');
         $mime = $this->getMIME();
         if ($mime == 'application/octet-stream') {
             if (@getimagesize($this->tmpfile)) {
                 $this->filetype = self::FILETYPE_IMAGE;
             }
         }
         if (!$this->filetype) {
             if (in_array($mime, $image_mime)) {
                 $this->filetype = self::FILETYPE_IMAGE;
             } elseif ($mime && preg_match('#^audio/|^video/#', $mime)) {
                 if (extension_loaded('ffmpeg') && false) {
                     $movie = new ffmpeg_movie($this->tmpfile);
                     if ($movie->hasVideo()) {
                         $this->filetype = self::FILETYPE_VIDEO;
                     } else {
                         $this->filetype = self::FILETYPE_AUDIO;
                     }
                 } else {
                     require_once FS_ROOT . 'include/ffmpeg/FFmpegAutoloader.php';
                     $ffmpegOutput = new FFmpegOutputProvider(Core::config('ffmpeg_binary'));
                     $ffmpeMovie = new FFmpegMovie($this->tmpfile, $ffmpegOutput, Core::config('ffmpeg_binary'));
                     if ($ffmpeMovie->hasVideo()) {
                         $this->filetype = self::FILETYPE_VIDEO;
                     } else {
                         $this->filetype = self::FILETYPE_AUDIO;
                     }
                     //$this->filetype = self::FILETYPE_AUDIO| self::FILETYPE_VIDEO;
                 }
             } else {
                 $this->filetype = self::FILETYPE_UNDEFINED;
             }
         }
     }
     return $this->filetype;
 }