/** * Method to get an array of data items. * * @return array An array of data items * * @since 12.2 */ public function getItems() { jimport('joomla.filesystem.folder'); $items = array(); $files = JFolder::files(JDeveloperArchive::getArchiveDir()); $store = $this->getStoreId('getItems'); foreach ($files as $file) { if (preg_match('/(^pkg_).*(.zip$)/', $file)) { $item = new JObject(); $item->set('id', $file); $item->set('name', $file); $item->set('created', date("Y M d - H:i:s", filemtime(JDeveloperArchive::getArchiveDir() . DS . $file))); $item->createDir = JDeveloperArchive::getArchiveDir() . "/" . JDeveloperArchive::getArchiveName("pkg_", $item->name, $item->get("version", "1.0.0")); $content = array(); if (!($zip = zip_open(JDeveloperArchive::getArchiveDir() . DS . $file))) { throw new Exception("Failed to open {$file}"); } while ($zip_entry = zip_read($zip)) { if (preg_match('/.zip$/', zip_entry_name($zip_entry))) { $content[] = zip_entry_name($zip_entry); } } $item->set('content', implode('<br>', $content)); $items[] = $item; } } // Add the items to the internal cache. $this->cache['packages'] = $items; return $this->cache['packages']; }
/** * Extract the QTI files. * * * @param UJM\ExoBundle\Services\classes\QTI $qtiRepo * * @return bool */ private function extractFiles($qtiRepo) { $request = $this->container->get('request'); $file = $request->files->get('qtifile'); $qtiRepo->createDirQTI(); $root = []; $fichier = []; $file->move($qtiRepo->getUserDir(), $file->getClientOriginalName()); $zip = new \ZipArchive(); if ($zip->open($qtiRepo->getUserDir() . $file->getClientOriginalName()) !== true) { return false; } $res = zip_open($qtiRepo->getUserDir() . $file->getClientOriginalName()); $zip->extractTo($qtiRepo->getUserDir()); $i = 0; while ($zip_entry = zip_read($res)) { if (zip_entry_filesize($zip_entry) > 0) { $nom_fichier = zip_entry_name($zip_entry); if (substr($nom_fichier, -4, 4) === '.xml') { $root[$i] = $fichier = explode('/', $nom_fichier); } } ++$i; } $zip->close(); return true; }
function extract_zip($zipfile, $dir) { if (function_exists('zip_open')) { $zip = zip_open($zipfile); if ($zip) { while ($zip_entry = zip_read($zip)) { if (zip_entry_filesize($zip_entry) > 0) { if (zip_entry_open($zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); file_put($dir . '/' . zip_entry_name($zip_entry), $buf); } } else { dir_create($dir . '/' . zip_entry_name($zip_entry)); } } zip_close($zip); } } else { $array = $this->list_zip($zipfile); $count = count($array); $f = 0; $d = 0; for ($i = 0; $i < $count; $i++) { if ($array[$i]['folder'] == 0) { if ($this->extract_file($zipfile, $dir, $i) > 0) { $f++; } } else { $d++; } } } return true; }
/** * Test if the Epub conversion works correctly * * @return void */ public function testConversion() { $this->epub->setInputFile($this->testInputFile); $this->epub->setOutputFile($this->testOutputFile); $this->epub->convert(); $this->assertTrue($this->epub->getStatus()); $this->assertNotSame(file_get_contents($this->testInputFile), file_get_contents($this->testOutputFile)); $finfo = finfo_open(FILEINFO_MIME_TYPE); $mimeType = finfo_file($finfo, $this->testOutputFile); $this->assertSame($mimeType, 'application/epub+zip'); $epubZip = zip_open($this->testOutputFile); $this->assertTrue(is_resource($epubZip)); $foundContent = false; $foundGraphics = false; while ($zipDir = zip_read($epubZip)) { $zipDirName = zip_entry_name($zipDir); if ($zipDirName == $this->expectedContentFile) { $foundContent = true; } if (strpos($zipDirName, $this->expectedGraphicsDir)) { $foundGraphics = true; } } zip_close($epubZip); $this->assertTrue($foundContent); $this->assertTrue($foundGraphics); }
function unpackZip($file, $dir) { if ($zip = zip_open(getcwd() . $file)) { if ($zip) { while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $dir_name = dirname(zip_entry_name($zip_entry)); if ($dir_name == "." || !is_dir($dir_name)) { $dir_op = $dir; foreach (explode("/", $dir_name) as $k) { $dir_op = $dir_op . $k; if (is_file($dir_op)) { unlink($dir_op); } if (!is_dir($dir_op)) { mkdir($dir_op); } $dir_op = $dir_op . "/"; } } $fp = fopen($dir . zip_entry_name($zip_entry), "w"); fwrite($fp, $buf); zip_entry_close($zip_entry); } else { return false; } } zip_close($zip); } } else { return false; } return true; }
public function odt_unzip($file, $save = false) { if (!function_exists('zip_open')) { die('NO ZIP FUNCTIONS DETECTED. Do you have the PECL ZIP extensions loaded?'); } if ($zip = zip_open($file)) { while ($zip_entry = zip_read($zip)) { $filename = zip_entry_name($zip_entry); if (zip_entry_name($zip_entry) == 'content.xml' and zip_entry_open($zip, $zip_entry, "r")) { $content = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } if (preg_match('Pictures/', $filename) and !preg_match('Object', $filename) and zip_entry_open($zip, $zip_entry, "r")) { $img[$filename] = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } } if (isset($content)) { if ($save == false) { return array($content, $img); } else { file_put_contents('content.xml', $content); if (is_array($img)) { if (!is_dir('Pictures')) { mkdir('Pictures'); } foreach ($img as $key => $val) { file_put_contents($key, $val); } } } } } }
function unzip($file) { $zip = zip_open($file); if (is_resource($zip)) { $tree = ""; while (($zip_entry = zip_read($zip)) !== false) { echo "Unpacking " . zip_entry_name($zip_entry) . "\n"; if (strpos(zip_entry_name($zip_entry), DIRECTORY_SEPARATOR) !== false) { $last = strrpos(zip_entry_name($zip_entry), DIRECTORY_SEPARATOR); $dir = substr(zip_entry_name($zip_entry), 0, $last); $file = substr(zip_entry_name($zip_entry), strrpos(zip_entry_name($zip_entry), DIRECTORY_SEPARATOR) + 1); if (!is_dir($dir)) { @mkdir($dir, 0755, true) or die("Unable to create {$dir}\n"); } if (strlen(trim($file)) > 0) { $return = @file_put_contents($dir . "/" . $file, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry))); if ($return === false) { die("Unable to write file {$dir}/{$file}\n"); } } } else { file_put_contents($file, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry))); } } } else { echo "Unable to open zip file\n"; } }
public static function unzip($file, $dir) { $zip = new ZipArchive(); $zip->open($file); $zip->extractTo($dir); return; $zip = zip_open($file); if (!is_resource($zip)) { return $zip; } while ($zipEntry = zip_read($zip)) { $name = zip_entry_name($zipEntry); $size = zip_entry_filesize($zipEntry); $data = zip_entry_read($zipEntry, $size); if (substr($name, -1, 1) == "/") { if (!is_dir($dir . "/" . $name)) { mkdir($dir . "/" . $name); } } else { $filename = $dir . "/" . $name; if (!is_file($filename) || md5(file_get_contents($filename)) != md5($data)) { file_put_contents($filename, $data); } } } return true; }
function unzip($file, $dir = 'unzip/') { if (!file_exists($dir)) { mkdir($dir, 0777); } $zip_handle = zip_open($file); if (is_resource($zip_handle)) { while ($zip_entry = zip_read($zip_handle)) { if ($zip_entry) { $zip_name = zip_entry_name($zip_entry); $zip_size = zip_entry_filesize($zip_entry); if ($zip_size == 0 && $zip_name[strlen($zip_name) - 1] == '/') { mkdir($dir . $zip_name, 0775); } else { @zip_entry_open($zip_handle, $zip_entry, 'r'); $fp = @fopen($dir . $zip_name, 'wb+'); @fwrite($fp, zip_entry_read($zip_entry, $zip_size), $zip_size); @fclose($fp); @chmod($dir . $zip_name, 0775); @zip_entry_close($zip_entry); } } } return true; } else { zip_close($zip_handle); return false; } }
function unzip($zipfile) { $zip = zip_open($zipfile); while ($zip_entry = zip_read($zip)) { zip_entry_open($zip, $zip_entry); if (substr(zip_entry_name($zip_entry), -1) == '/') { $zdir = substr(zip_entry_name($zip_entry), 0, -1); if (file_exists($zdir)) { trigger_error('Directory "<b>' . $zdir . '</b>" exists', E_USER_ERROR); return false; } mkdir($zdir); } else { $name = zip_entry_name($zip_entry); if (file_exists($name)) { trigger_error('File "<b>' . $name . '</b>" exists', E_USER_ERROR); return false; } $fopen = fopen($name, "w"); fwrite($fopen, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)), zip_entry_filesize($zip_entry)); } zip_entry_close($zip_entry); } zip_close($zip); return true; }
/** * This action handles import action. * * It must be reached by a POST request. * * Parameter is: * - file (default: nothing!) * Available file types are: zip, json or xml. */ public function importAction() { if (!Minz_Request::isPost()) { Minz_Request::forward(array('c' => 'importExport', 'a' => 'index'), true); } $file = $_FILES['file']; $status_file = $file['error']; if ($status_file !== 0) { Minz_Log::error('File cannot be uploaded. Error code: ' . $status_file); Minz_Request::bad(_t('feedback.import_export.file_cannot_be_uploaded'), array('c' => 'importExport', 'a' => 'index')); } @set_time_limit(300); $type_file = $this->guessFileType($file['name']); $list_files = array('opml' => array(), 'json_starred' => array(), 'json_feed' => array()); // We try to list all files according to their type $list = array(); if ($type_file === 'zip' && extension_loaded('zip')) { $zip = zip_open($file['tmp_name']); if (!is_resource($zip)) { // zip_open cannot open file: something is wrong Minz_Log::error('Zip archive cannot be imported. Error code: ' . $zip); Minz_Request::bad(_t('feedback.import_export.zip_error'), array('c' => 'importExport', 'a' => 'index')); } while (($zipfile = zip_read($zip)) !== false) { if (!is_resource($zipfile)) { // zip_entry() can also return an error code! Minz_Log::error('Zip file cannot be imported. Error code: ' . $zipfile); } else { $type_zipfile = $this->guessFileType(zip_entry_name($zipfile)); if ($type_file !== 'unknown') { $list_files[$type_zipfile][] = zip_entry_read($zipfile, zip_entry_filesize($zipfile)); } } } zip_close($zip); } elseif ($type_file === 'zip') { // Zip extension is not loaded Minz_Request::bad(_t('feedback.import_export.no_zip_extension'), array('c' => 'importExport', 'a' => 'index')); } elseif ($type_file !== 'unknown') { $list_files[$type_file][] = file_get_contents($file['tmp_name']); } // Import file contents. // OPML first(so categories and feeds are imported) // Starred articles then so the "favourite" status is already set // And finally all other files. $error = false; foreach ($list_files['opml'] as $opml_file) { $error = $this->importOpml($opml_file); } foreach ($list_files['json_starred'] as $article_file) { $error = $this->importJson($article_file, true); } foreach ($list_files['json_feed'] as $article_file) { $error = $this->importJson($article_file); } // And finally, we get import status and redirect to the home page Minz_Session::_param('actualize_feeds', true); $content_notif = $error === true ? _t('feedback.import_export.feeds_imported_with_errors') : _t('feedback.import_export.feeds_imported'); Minz_Request::good($content_notif); }
public static function parse($filename) { $striped_content = ''; $content = ''; if (!$filename || !file_exists($filename)) { return false; } $zip = zip_open($filename); if (!$zip || is_numeric($zip)) { return false; } while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry) == FALSE) { continue; } if (zip_entry_name($zip_entry) != "content.xml") { continue; } $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } zip_close($zip); $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content); $content = str_replace('</w:r></w:p>', "\r\n", $content); $striped_content = strip_tags($content); return $striped_content; }
function getZipHeaderFilepointer($filename, &$MP3fileInfo) { if (!function_exists('zip_open')) { $MP3fileInfo['error'] = "\n" . 'Zip functions not available (requires at least PHP 4.0.7RC1 and ZZipLib (http://zziplib.sourceforge.net/) - see http://www.php.net/manual/en/ref.zip.php)'; return FALSE; } else { if ($zip = zip_open($filename)) { $zipentrycounter = 0; while ($zip_entry = zip_read($zip)) { $MP3fileInfo['zip']['entries']["{$zipentrycounter}"]['name'] = zip_entry_name($zip_entry); $MP3fileInfo['zip']['entries']["{$zipentrycounter}"]['filesize'] = zip_entry_filesize($zip_entry); $MP3fileInfo['zip']['entries']["{$zipentrycounter}"]['compressedsize'] = zip_entry_compressedsize($zip_entry); $MP3fileInfo['zip']['entries']["{$zipentrycounter}"]['compressionmethod'] = zip_entry_compressionmethod($zip_entry); //if (zip_entry_open($zip, $zip_entry, "r")) { // $MP3fileInfo['zip']['entries']["$zipentrycounter"]['contents'] = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); // zip_entry_close($zip_entry); //} $zipentrycounter++; } zip_close($zip); return TRUE; } else { $MP3fileInfo['error'] = "\n" . 'Could not open file'; return FALSE; } } }
function GenerateInfos() { $zip = zip_open($this->zipFile); $folder_count = 0; $file_count = 0; $unzipped_size = 0; $ext_array = array(); $ext_count = array(); //$entries_list = array (); $entries_name = array(); if ($zip) { while ($zip_entry = zip_read($zip)) { $zip_entry_name = zip_entry_name($zip_entry); if (is_dir($zip_entry_name)) { $folder_count++; } else { //$entries_list[]=$zip_entry; $entries_name[] = $zip_entry_name; $file_count++; } $path_parts = pathinfo(zip_entry_name($zip_entry)); $ext = strtolower(trim(isset($path_parts['extension']) ? $path_parts['extension'] : '')); if ($ext != '') { $ext_count[$ext]['count'] = isset($ext_count[$ext]['count']) ? $ext_count[$ext]['count'] : 0; $ext_count[$ext]['count']++; } $unzipped_size = $unzipped_size + zip_entry_filesize($zip_entry); } } $zipped_size = $this->get_file_size_unit(filesize($this->zipFile)); $unzipped_size = $this->get_file_size_unit($unzipped_size); $zip_info = array("folders" => $folder_count, "files" => $file_count, "zipped_size" => $zipped_size, "unzipped_size" => $unzipped_size, "file_types" => $ext_count, "entries_name" => $entries_name); zip_close($zip); return $zip_info; }
function getLayoutData($layout, $fileName, $usage, $install = false) { $output = ""; $zip = zip_open(($install == false ? 'layouts/' : '../layouts/') . $layout . '.zip'); if ($zip) { while ($zip_entry = zip_read($zip)) { $file = basename(zip_entry_name($zip_entry)); if (zip_entry_open($zip, $zip_entry, 'r')) { if ($usage == "include" && strpos($file, $fileName) !== FALSE) { $output = 'phar://layouts/' . $layout . '.zip/' . zip_entry_name($zip_entry); } if ($usage == "echo") { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); if (strpos(strval($file), strval($fileName)) !== FALSE) { if (strpos($file, 'settings') !== FALSE) { $output = json_decode($buf, true); } else { $output = $buf; } } } } } zip_close($zip); } return $output; }
private function read_docx() { $striped_content = ''; $content = ''; $zip = zip_open($this->filename); if (!$zip || is_numeric($zip)) { return false; } while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry) == FALSE) { continue; } if (zip_entry_name($zip_entry) != "word/document.xml") { continue; } $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } // end while zip_close($zip); $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content); $content = str_replace('</w:r></w:p>', "\r\n", $content); $striped_content = strip_tags($content); return $striped_content; }
public function read_file_docx($filename) { $striped_content = ''; $content = ''; if (!$filename || !file_exists($filename)) { return false; } $zip = zip_open($filename); if (!$zip || is_numeric($zip)) { return false; } while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry) == FALSE) { continue; } if (zip_entry_name($zip_entry) != "word/document.xml") { continue; } $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } // end while zip_close($zip); //echo $content; //echo "<hr>"; //file_put_contents('1.xml', $content); $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content); $content = str_replace('</w:r></w:p>', "\r\n", $content); $striped_content = strip_tags($content); return $striped_content; }
private function open() { $this->resource = zip_open($this->filepath); if (!$this->resource) { throw new SException("Zip file {$this->filepath} does not exist"); } }
function extract($file, $addon_name) { global $config; $unzipped = FALSE; $zip = zip_open($file); if (is_resource($zip)) { while ($zip_entry = zip_read($zip)) { $path_parts = pathinfo($config['basepath'] . "/addons/" . $addon_name . '/' . zip_entry_name($zip_entry)); //echo'<pre>'.print_r($path_parts,true).'</pre>'; if (!isset($path_parts['extension']) && !file_exists($config['basepath'] . "/addons/" . $addon_name . '/' . zip_entry_name($zip_entry))) { mkdir($config['basepath'] . "/addons/" . $addon_name . '/' . zip_entry_name($zip_entry)); } if (!is_dir($config['basepath'] . "/addons/" . $addon_name . '/' . zip_entry_name($zip_entry))) { $fp = fopen($config['basepath'] . "/addons/" . $addon_name . '/' . zip_entry_name($zip_entry), "w"); $unzipped = TRUE; if (zip_entry_open($zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); fwrite($fp, "{$buf}"); zip_entry_close($zip_entry); fclose($fp); } } } zip_close($zip); return TRUE; } return FALSE; }
function load_sheet($sheet_index) { $this->zip = zip_open($this->xlsx); if ($this->zip) { while ($zip_entry = zip_read($this->zip)) { if (zip_entry_name($zip_entry) == 'xl/worksheets/sheet' . $sheet_index . '.xml') { // 실제 로드되는 파일 if (zip_entry_open($this->zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $arr = simplexml_load_string($buf); $this->rows =& $arr->sheetData->row; $this->rowsize = sizeof($this->rows); // dimension 을 파싱해서 써도 되지만 구찬아서.; if ($this->rowsize > 0) { $this->colsize = (int) array_pop(explode(":", (string) $this->rows[0]['spans'])); // 1:7 이런식으로 값이 들어있음. } else { $this->colsize = 0; } zip_entry_close($zip_entry); } // if } } // while } // if this zip }
function caching($comics_id, $zip_path, $image_ext) { $comic = zip_open($zip_path); if (!is_resource($comic)) { die("[ERR]ZIP_OPEN : " . $zip_path); } $inzip_path = ""; $count = 0; $files = null; $db = new SQLite3(DB); $db->exec("BEGIN DEFERRED;"); while (($entry = zip_read($comic)) !== false) { $inzip_path = zip_entry_name($entry); $cache_name = md5($zip_path . "/" . $inzip_path) . '.' . get_ext($inzip_path); // 画像か否か if (!is_image($inzip_path, $image_ext)) { continue; } $data = zip_entry_read($entry, zip_entry_filesize($entry)); $filepath = CACHE . '/' . $cache_name; file_put_contents($filepath, $data); $count++; query("INSERT INTO images (comics_id, page, filepath) VALUES (" . $comics_id . ", " . $count . ", '" . $filepath . "')", $db); } zip_close($comic); query("UPDATE comics SET pages = " . $count . " WHERE id = " . $comics_id, $db); $db->exec("COMMIT;"); }
function findFromZip($file, $path) { global $encoding; if (preg_match('/.*\\.(?:jar|zip)$/i', $file)) { if (function_exists("zip_open")) { $zip = zip_open($file); if (!is_resource($zip)) { die(zipFileErrMsg($zip)); } while ($entry = zip_read($zip)) { if (zip_entry_name($entry) == $path && zip_entry_open($zip, $entry, "r")) { $contentType = findMimiType($path); if (preg_match('/^image\\//i', $contentType)) { header("Content-Type:{$contentType};"); } else { header("Content-Type:{$contentType};charset={$encoding}"); } echo zip_entry_read($entry, zip_entry_filesize($entry)); zip_entry_close($entry); zip_close($zip); return true; } } zip_close($zip); } else { echo "//您的php没有安装zip扩展,无法遍历zip格式类库"; return true; } } }
function unpackInto($file_path, $dir_path) { $zip = zip_open($file_path); if (!is_dir($dir_path)) { throw new Exception($dir_path . ' should be a directory but isn\'t.'); } if ($zip) { while ($zip_entry = zip_read($zip)) { zip_entry_open($zip, $zip_entry); if (substr(zip_entry_name($zip_entry), -1) == '/') { //this $zip_entry is a directory. create it. $zdir = substr(zip_entry_name($zip_entry), 0, -1); mkdir($dir_path . '/' . $zdir); } else { $file = basename(zip_entry_name($zip_entry)); $fp = fopen($dir_path . '/' . zip_entry_name($zip_entry), "w+"); //echo zip_entry_name($zip_entry); if (zip_entry_open($zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } fwrite($fp, $buf); fclose($fp); } } zip_close($zip); } }
static function unpack($archive, $out_folder, $file_name = '') { $zip = zip_open($archive); while ($zip_entry = zip_read($zip)) { $zip_entry_name = zip_entry_name($zip_entry); if ($zip_entry_name != '.DS_Store') { $zip_entry_size = zip_entry_filesize($zip_entry); if ($zip_entry_size == 0) { if (!file_exists($out_folder . $zip_entry_name) && !@mkdir($out_folder . $zip_entry_name)) { throw new Exception('Can not create folder <strong>' . $out_folder . $zip_entry_name . '</strong>. Permissions denied.'); } } else { if (!$file_name || $out_folder . $zip_entry_name == $file_name) { if (!@file_put_contents($out_folder . $zip_entry_name, zip_entry_read($zip_entry, $zip_entry_size))) { throw new Exception('Can not unpack file <strong>' . $out_folder . $zip_entry_name . '</strong>. Permissions denied.'); } if ($file_name) { break; } } } } } zip_close($zip); }
public function unzip($file) { $zip = zip_open(realpath(".") . "/" . $file); if (!$zip) { return "Unable to proccess file '{$file}'"; } $e = ''; while ($zip_entry = zip_read($zip)) { $zdir = dirname(zip_entry_name($zip_entry)); $zname = zip_entry_name($zip_entry); if (!zip_entry_open($zip, $zip_entry, "r")) { $e .= "Unable to proccess file '{$zname}'"; continue; } if (!is_dir($zdir)) { mkdirr($zdir, 0777); } #print "{$zdir} | {$zname} \n"; $zip_fs = zip_entry_filesize($zip_entry); if (empty($zip_fs)) { continue; } $zz = zip_entry_read($zip_entry, $zip_fs); $z = fopen($zname, "w"); fwrite($z, $zz); fclose($z); zip_entry_close($zip_entry); } zip_close($zip); return $e; }
/** * APP版本更新接口 * @date: 2016年1月10日 下午9:30:33 * * @author : Elliot * @param * : none * @return : */ public function version_get() { $dir = 'data'; $dh = @opendir($dir); $return = array(); while ($file = @readdir($dh)) { // 循环读取目录下的文件 if ($file != '.' and $file != '..') { $path = $dir . DIRECTORY_SEPARATOR . $file; // 设置目录,用于含有子目录的情况 if (is_file($path)) { $filetime[] = date("Y-m-d H:i:s", filemtime($path)); // 获取文件最近修改日期 $return[] = $dir . DIRECTORY_SEPARATOR . $file; } } } @closedir($dh); // 关闭目录流 array_multisort($filetime, SORT_DESC, SORT_STRING, $return); // 按时间排序 $file = current($return); $zip = zip_open($file); if ($zip) { while ($zip_entry = zip_read($zip)) { if (zip_entry_name($zip_entry) == self::INSTALLPACKETVERSIONFILE && zip_entry_open($zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } } zip_close($zip); } $result = array('version' => $buf, 'url' => 'http://' . $_SERVER['SERVER_NAME'] . DIRECTORY_SEPARATOR . $file); $this->response($result, 200); }
/** * les deux fonction suivante ont été récupéré dans les exemples de php.net puis adapté pour leed. * * Unzip the source_file in the destination dir * * @param string The path to the ZIP-file. * @param string The path where the zipfile should be unpacked, if false the directory of the zip-file is used * @param boolean Indicates if the files will be unpacked in a directory with the name of the zip-file (true) or not (false) (only if the destination directory is set to false!) * @param boolean Overwrite existing files (true) or not (false) * * @return boolean Succesful or not */ function unzip_leed($src_file, $dest_dir = false, $create_zip_name_dir = true, $overwrite = true) { if ($zip = zip_open($src_file)) { if ($zip) { $splitter = $create_zip_name_dir === true ? "." : "/"; if ($dest_dir === false) { $dest_dir = substr($src_file, 0, strrpos($src_file, $splitter)) . "/"; } // Create the directories to the destination dir if they don't already exist create_dirs($dest_dir); // For every file in the zip-packet while ($zip_entry = zip_read($zip)) { // Now we're going to create the directories in the destination directories // If the file is not in the root dir $pos_last_slash = strrpos(zip_entry_name($zip_entry), "/"); if ($pos_last_slash !== false) { // Create the directory where the zip-entry should be saved (with a "/" at the end) $interne_dir = str_replace("Leed-master/", "", substr(zip_entry_name($zip_entry), 0, $pos_last_slash + 1)); $interne_dir = str_replace("Leed-multi_user/", "", $interne_dir); $interne_dir = str_replace("Leed-market-master/", "", $interne_dir); $interne_dir = str_replace("Leed-market-multi_user/", "", $interne_dir); $interne_dir = str_replace("Leed-dev/", "", $interne_dir); create_dirs($dest_dir . $interne_dir); } // Open the entry if (zip_entry_open($zip, $zip_entry, "r")) { // The name of the file to save on the disk $file_name = $dest_dir . zip_entry_name($zip_entry); // Check if the files should be overwritten or not if ($overwrite === true || $overwrite === false && !is_file($file_name)) { // Get the content of the zip entry $fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $file_name = str_replace("Leed-master/", "", $file_name); $file_name = str_replace("Leed-multi_user/", "", $file_name); $file_name = str_replace("Leed-market-master/", "", $file_name); $file_name = str_replace("Leed-market-multi_user/", "", $file_name); $file_name = str_replace("Leed-dev/", "", $file_name); if (is_dir($file_name)) { echo "répertoire: " . $file_name . "<br />"; } else { if (file_put_contents($file_name, $fstream) === false) { echo "erreur copie: " . $file_name . "<br />"; } else { echo "copie: " . $file_name . "<br />"; } } } // Close the entry zip_entry_close($zip_entry); } } // Close the zip-file zip_close($zip); } } else { return false; } return true; }
/** * Unzip the source_file in the destination dir * * @param string The path to the ZIP-file. * @param string The path where the zipfile should be unpacked, if false the directory of the zip-file is used * @param boolean Indicates if the files will be unpacked in a directory with the name of the zip-file (true) or not (false) (only if the destination directory is set to false!) * @param boolean Overwrite existing files (true) or not (false) * * @return boolean Succesful or not */ function unzip($src_file, $dest_dir = false, $create_zip_name_dir = true, $overwrite = true) { if (function_exists("zip_open")) { if (!is_resource(zip_open($src_file))) { $src_file = dirname($_SERVER['SCRIPT_FILENAME']) . "/" . $src_file; } if (is_resource($zip = zip_open($src_file))) { $splitter = $create_zip_name_dir === true ? "." : "/"; if ($dest_dir === false) { $dest_dir = substr($src_file, 0, strrpos($src_file, $splitter)) . "/"; } // Create the directories to the destination dir if they don't already exist $this->create_dirs($dest_dir); // For every file in the zip-packet while ($zip_entry = zip_read($zip)) { // Now we're going to create the directories in the destination directories // If the file is not in the root dir $pos_last_slash = strrpos(zip_entry_name($zip_entry), "/"); if ($pos_last_slash !== false) { // Create the directory where the zip-entry should be saved (with a "/" at the end) $this->create_dirs($dest_dir . substr(zip_entry_name($zip_entry), 0, $pos_last_slash + 1)); } // Open the entry if (zip_entry_open($zip, $zip_entry, "r")) { // The name of the file to save on the disk $file_name = $dest_dir . zip_entry_name($zip_entry); // Check if the files should be overwritten or not if ($overwrite === true || $overwrite === false && !is_file($file_name)) { // Get the content of the zip entry $fstream = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); if (!is_dir($file_name)) { file_put_contents($file_name, $fstream); } // Set the rights if (file_exists($file_name)) { chmod($file_name, 0777); echo "<span style=\"color:#1da319;\">file saved: </span>" . $file_name . "<br />"; } else { echo "<span style=\"color:red;\">file not found: </span>" . $file_name . "<br />"; } } // Close the entry zip_entry_close($zip_entry); } } // Close the zip-file zip_close($zip); } else { echo "No Zip Archive Found."; return false; } return true; } else { if (version_compare(phpversion(), "5.2.0", "<")) { $infoVersion = "(use PHP 5.2.0 or later)"; } echo "You need to install/enable the php_zip.dll extension {$infoVersion}"; } }
function upload_article_handler(&$request, &$session, &$files) { $publication = Input::Get('Pub', 'int', 0); $issue = Input::Get('Issue', 'int', 0); $section = Input::Get('Section', 'int', 0); $language = Input::Get('Language', 'int', 0); $sLanguage = Input::Get('sLanguage', 'int', 0); $articleNumber = Input::Get('Article', 'int', 0); if (!Input::IsValid()) { echo "Input Error: Missing input"; return; } // Unzip the sxw file to get the content. $zip = zip_open($files["filename"]["tmp_name"]); if ($zip) { $xml = null; while ($zip_entry = zip_read($zip)) { if (zip_entry_name($zip_entry) == "content.xml") { if (zip_entry_open($zip, $zip_entry, "r")) { $xml = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } } } zip_close($zip); if (!is_null($xml)) { // Write the XML to a file because the XSLT functions // require it to be in a file in order to be processed. $tmpXmlFilename = tempnam("/tmp", "ArticleImportXml"); $tmpXmlFile = fopen($tmpXmlFilename, "w"); fwrite($tmpXmlFile, $xml); fclose($tmpXmlFile); // Transform the OpenOffice document to DocBook format. $xsltProcessor = xslt_create(); $docbookXml = xslt_process($xsltProcessor, $tmpXmlFilename, "sxwToDocbook.xsl"); unlink($tmpXmlFilename); // Parse the docbook to get the data. $docBookParser = new DocBookParser(); $docBookParser->parseString($docbookXml, true); $article = new Article($articleNumber, $language); $article->setTitle($docBookParser->getTitle()); $article->setIntro($docBookParser->getIntro()); $article->setBody($docBookParser->getBody()); // Go back to the "Edit Article" page. header("Location: /$ADMIN/articles/edit.php?Pub=$publication&Issue=$issue&Section=$section&Article=$articleNumber&Language=$language&sLanguage=$sLanguage"); } // if (!is_null($xml)) } // if ($zip) // Some sort of error occurred - show the upload page again. include("index.php"); } // fn upload_article_handler
/** * 读取docx文档(word文档) * @param string $filename 文档绝对路径 * @return string|bool */ public static function readDocx($filename) { set_time_limit(0); $striped_content = ''; $content = ''; $ext = strtolower(substr(strrchr($filename, '.'), 1)); if ($ext != 'docx') { return ''; } if (!$filename || !file_exists($filename)) { return ''; } $zip = zip_open($filename); if (!$zip || is_numeric($zip)) { return ''; } while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry) == FALSE) { continue; } if (zip_entry_name($zip_entry) != "word/document.xml") { continue; } $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); zip_entry_close($zip_entry); } zip_close($zip); $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content); $content = str_replace('</w:r></w:p>', "\r\n", $content); $striped_content = strip_tags($content); return $striped_content; }