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; }
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; }
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; }
public function close() { if (is_resource($this->handler)) { zip_close($this->handler); $this->handler = NULL; } }
/** * 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); }
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; }
/** * 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); }
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 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; }
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); } }
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; }
/** * 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); }
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; }
function list_zip_files($id) { if (!($r = open_zip_archive($id))) { return false; } $zip = $r["handle"]; $result = array(); $idx = 0; while ($entry = zip_read($zip)) { $path = zip_entry_name($entry); $components = explode("/", $path); $filename = $components[count($components) - 1]; /* * Remove * - filenames that begin with . * - .class * - .prefs * - paths ending with / (directory names) * - paths that contain .metadata */ if (substr($filename, 0, 1) != "." && !endswith($filename, ".class") && !endswith($filename, ".prefs") && !endswith($path, "/") && strpos($path, ".metadata") === FALSE) { $result[$idx] = $filename; } $idx++; } zip_close($zip); return $result; }
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; }
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); }
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;"); }
/** * 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; }
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
/** * 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 check_is_zip($file_zip) { if (is_resource($zip = zip_open($file_zip))) { zip_close($zip); return TRUE; } return FALSE; }
function unzip($dir, $file, $verbose = 0) { $name = substr($file, 0, strrpos($file, '.')); $extension = substr($file, strrpos($file, '.')); $dir_path = "{$dir}{$name}"; $zip_path = "{$dir}{$file}"; $ERROR_MSGS[0] = "OK"; $ERROR_MSGS[1] = "Zip path {$zip_path} doesn't exists."; $ERROR_MSGS[2] = "Directory {$dir_path} for unzip the pack already exists, impossible continue."; $ERROR_MSGS[3] = "Error while opening the {$zip_path} file."; $ERROR = 0; echo "inside unzip method" . "\n dir = " . $dir_path . " zippath = " . $zip_path; if (file_exists($zip_path)) { echo "status: file exists " . $zip_path . "\n"; if (!file_exists($dir_path)) { echo "making directory " . $dir_path . "\n"; mkdir($dir_path); } if ($link = zip_open($zip_path)) { echo "inside if open"; while (($zip_entry = zip_read($link)) && !$ERROR) { if (zip_entry_open($link, $zip_entry, "r")) { $data = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); $dir_name = dirname(zip_entry_name($zip_entry)); $name = zip_entry_name($zip_entry); if ($name[strlen($name) - 1] == '/') { $base = "{$dir_path}/"; foreach (explode("/", $name) as $k) { $base .= "{$k}/"; if (!file_exists($base)) { mkdir($base); } } } else { $name = "{$dir_path}/{$name}"; #if ($verbose) echo "\n extracting: {$name}<br>"; $stream = fopen($name, "w"); fwrite($stream, $data); } zip_entry_close($zip_entry); } else { $ERROR = 4; } } zip_close($link); } else { $ERROR = "3"; } } else { $ERROR = 2; } #} #else # $ERROR = 1; return $ERROR_MSGS[$ERROR]; }
function extractZip($zipFile, $extract_path, $remove_path = '', $blacklist = '', $whitelist = '') { if ($zipFile == '' or $extract_path == '') { return false; } if (!file_exists($zipFile)) { return false; } $zip = zip_open($zipFile); $remove_path = addcslashes($remove_path, "/"); if (is_resource($zip)) { $i = 0; $extracted_files = array(); while ($zip_entry = zip_read($zip)) { $filename = zip_entry_name($zip_entry); $file_path = preg_replace("/{$remove_path}/", "", $filename); $dir_path = preg_replace("/{$remove_path}/", "", dirname($filename)); if (isset($blacklist) and is_array($blacklist) and in_array($file_path, $blacklist)) { continue; } if (isset($whitelist) and is_array($whitelist) and !in_array($filename, $whitelist)) { continue; } $completePath = $extract_path . $dir_path; $completeName = $extract_path . $file_path; // Walk through path to create non existing directories // This won't apply to empty directories ! They are created further below if (!file_exists($completePath) && preg_match('/^' . $remove_path . '/', dirname(zip_entry_name($zip_entry)))) { $tmp = PHP_OS == "WINNT" ? "" : DIRECTORY_SEPARATOR; foreach (explode('/', $completePath) as $k) { if ($k != "") { $tmp .= $k . DIRECTORY_SEPARATOR; if (!file_exists($tmp)) { mkdir($tmp, 0777); } } } } if (zip_entry_open($zip, $zip_entry, "r")) { if (preg_match('/^' . $remove_path . '/', dirname(zip_entry_name($zip_entry)))) { if (!preg_match("/\\/\$/", $completeName)) { if ($fd = fopen($completeName, 'w+')) { fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry))); fclose($fd); $extracted_files[$i]['filename'] = zip_entry_name($zip_entry); $i++; } } } zip_entry_close($zip_entry); } } zip_close($zip); return $extracted_files; } return false; }
public function rewind() { if ($this->resource !== null) { zip_close($this->resource); } $this->entry = null; $this->open(); $this->next(); }
/** * @desc This method gets the required XML snippets from the file, and extracts the image assets * @return $this, modifies $this->xml, $this->assets */ public function import() { $imageAssets = array(); $zip = zip_open($this->wordUri); while ($zipEntry = zip_read($zip)) { $entryName = zip_entry_name($zipEntry); if (zip_entry_open($zip, $zipEntry) == FALSE) { continue; } # /media/ contains all assets if (strpos($entryName, 'word/media') !== false) { # Removes 'word/media' prefix $imageName = substr($entryName, 11); # Prevent EMF file extensions passing, as they are used by word rather than being manually placed if (!$this->_allowEmfImages) { if (substr($imageName, -3) == 'emf') { continue; } } # Place the image assets into an array for future reference $imageAssets[$imageName] = array('h' => 'auto', 'w' => 'auto', 'title' => $imageName, 'id' => null, 'data' => base64_encode(zip_entry_read($zipEntry, zip_entry_filesize($zipEntry)))); } # Get the image relationship xml structure if ($entryName == 'word/_rels/document.xml.rels') { $this->xml['image'] = zip_entry_read($zipEntry, zip_entry_filesize($zipEntry)); } # Get the document structure if ($entryName == 'word/document.xml') { $this->xml['structure'] = zip_entry_read($zipEntry, zip_entry_filesize($zipEntry)); } zip_entry_close($zipEntry); } zip_close($zip); # Apply relId's to the image array, so they can be attached to the structure if (isset($this->xml['image'])) { $dom = new \DOMDocument(); $dom->loadXML($this->xml['image'], LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING); $dom->encoding = 'utf-8'; $elements = $dom->getElementsByTagName('*'); foreach ($elements as $node) { if ($node->nodeName == 'Relationship') { $relationshipAttributes = $node->attributes; $relationId = $relationshipAttributes->item(0); $relationTarget = $relationshipAttributes->item(2); if (is_object($relationId) && is_object($relationTarget)) { if (strpos($relationTarget->nodeValue, 'media/') !== false) { $imageName = substr($relationTarget->nodeValue, 6); $imageAssets[$imageName]['id'] = $relationId->nodeValue; } } } } $this->images = $imageAssets; } return $this; }
function get_zip_originalsize($filename) { $size = 0; $resource = zip_open($filename); while ($dir_resource = zip_read($resource)) { $size += zip_entry_filesize($dir_resource); } zip_close($resource); return $size; }
public static function getZipFilsize($filename) { $size = 0; $resource = zip_open($filename); while ($dir_resource = zip_read($resource)) { $size += zip_entry_filesize($dir_resource); } zip_close($resource); return $size; }
/** * 读取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; }