protected function zip_upload($fobject, $name, $data, $action, $item) { $res = array(); $mtype = MIME::type_for_file($fobject->original_name); if ($mtype->type == 'application/zip;zip') { $zip = new ZipArchive(); $ro = $zip->open($fobject->path); if ($ro === true) { $dir = CMS::temp_dir() . '/' . $fobject->name; $dir_object = IO_FS::mkdir($dir, null, true); if ($dir_object) { $zip->extractTo($dir); $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS)); foreach ($objects as $k => $object) { $base = trim($object->getBasename($object->getExtension()), '. '); if ('' !== $base) { $upload = Net_HTTP::Upload($object->getPathname(), $object->getFilename(), array('name' => $object->getFilename(), 'type' => MIME::type_for_file($object->getPathname())->type, 'tmp_name' => $object->getPathname(), 'error' => 0, 'size' => $object->getSize())); $res[] = $this->upload_file($upload, $name, $data, $action, $item); } } $dir_object->rm(); } $zip->close(); } } return $res; }
/** * Возвращает MIME-тип файла * * @return string */ protected function get_mime_type() { return $this->mime_type ? $this->mime_type : ($this->mime_type = MIME::type_for_file($this->original_name)); }
/** * Возвращает MIME-тип, соответствующий файлу, в виде объекта класса MIME.Type * * @return MIME_Type */ private function get_mime_type() { return $this->mime_type ? $this->mime_type : ($this->mime_type = MIME::type_for_file($this)); }