本文整理汇总了PHP中zip_entry_close函数的典型用法代码示例。如果您正苦于以下问题:PHP zip_entry_close函数的具体用法?PHP zip_entry_close怎么用?PHP zip_entry_close使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了zip_entry_close函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: ExtractEntry
public static function ExtractEntry($zip, $entry)
{
zip_entry_open($zip, $entry);
$data = zip_entry_read($entry, zip_entry_filesize($entry));
zip_entry_close($entry);
return $data;
}
开发者ID:hackingman,项目名称:TubeX,代码行数:7,代码来源:Zip.php
示例2: unzip
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;
}
开发者ID:Alexeykolobov,项目名称:php,代码行数:31,代码来源:System.php
示例3: read_file_docx
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;
}
开发者ID:einnor,项目名称:mailroom,代码行数:31,代码来源:docxreader.php
示例4: load_sheet
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
}
开发者ID:akswosn,项目名称:Smartax,代码行数:28,代码来源:ohjicXlsxReader.php
示例5: unpackInto
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);
}
}
开发者ID:ingmarschuster,项目名称:MindResearchRepository,代码行数:28,代码来源:ZipSupplFile.php
示例6: unzip
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;
}
开发者ID:lotcz,项目名称:zshop,代码行数:26,代码来源:zip.php
示例7: unpackZip
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;
}
开发者ID:mamogmx,项目名称:praticaweb-alghero,代码行数:35,代码来源:stp.crea_doc.php
示例8: parse
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;
}
开发者ID:ellak-monades-aristeias,项目名称:wp-file-search,代码行数:27,代码来源:odt.php
示例9: unzip
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;
}
}
开发者ID:vladimir-g,项目名称:rulinux-engine,代码行数:29,代码来源:admin.class.php
示例10: read_docx
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;
}
开发者ID:roman1970,项目名称:lis,代码行数:25,代码来源:DocxConverter.php
示例11: odt_unzip
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);
}
}
}
}
}
}
开发者ID:hackersforcharity,项目名称:rachelpiOS,代码行数:34,代码来源:odt_reader.php
示例12: version_get
/**
* 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);
}
开发者ID:asmenglei,项目名称:lanxiao,代码行数:44,代码来源:Restful.php
示例13: extract_zip
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;
}
开发者ID:hiproz,项目名称:zhaotaoci.cc,代码行数:35,代码来源:unzip.class.php
示例14: upload_article_handler
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
开发者ID:nistormihai,项目名称:Newscoop,代码行数:59,代码来源:CommandProcessor.php
示例15: unzip
/**
* 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}";
}
}
开发者ID:oaki,项目名称:demoshop,代码行数:69,代码来源:unzip_class.php
示例16: unzip_leed
/**
* 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;
}
开发者ID:kraoc,项目名称:Leed-market,代码行数:71,代码来源:leedUpdateSource.plugin.disabled.php
示例17: PMA_getZipContents
/**
* Gets zip file contents
*
* @param string $file zip file
* @param string $specific_entry regular expression to match a file
*
* @return array ($error_message, $file_data); $error_message
* is empty if no error
*/
function PMA_getZipContents($file, $specific_entry = null)
{
$error_message = '';
$file_data = '';
$zip_handle = zip_open($file);
if (!is_resource($zip_handle)) {
$error_message = __('Error in ZIP archive:') . ' ' . PMA_getZipError($zip_handle);
zip_close($zip_handle);
return array('error' => $error_message, 'data' => $file_data);
}
$first_zip_entry = zip_read($zip_handle);
if (false === $first_zip_entry) {
$error_message = __('No files found inside ZIP archive!');
zip_close($zip_handle);
return array('error' => $error_message, 'data' => $file_data);
}
/* Is the the zip really an ODS file? */
$read = zip_entry_read($first_zip_entry);
$ods_mime = 'application/vnd.oasis.opendocument.spreadsheet';
if (!strcmp($ods_mime, $read)) {
$specific_entry = '/^content\\.xml$/';
}
if (!isset($specific_entry)) {
zip_entry_open($zip_handle, $first_zip_entry, 'r');
/* File pointer has already been moved,
* so include what was read above */
$file_data = $read;
$file_data .= zip_entry_read($first_zip_entry, zip_entry_filesize($first_zip_entry));
zip_entry_close($first_zip_entry);
zip_close($zip_handle);
return array('error' => $error_message, 'data' => $file_data);
}
/* Return the correct contents, not just the first entry */
for (;;) {
$entry = zip_read($zip_handle);
if (is_resource($entry)) {
if (preg_match($specific_entry, zip_entry_name($entry))) {
zip_entry_open($zip_handle, $entry, 'r');
$file_data = zip_entry_read($entry, zip_entry_filesize($entry));
zip_entry_close($entry);
break;
}
} else {
/**
* Either we have reached the end of the zip and still
* haven't found $specific_entry or there was a parsing
* error that we must display
*/
if ($entry === false) {
$error_message = __('Error in ZIP archive:') . ' Could not find "' . $specific_entry . '"';
} else {
$error_message = __('Error in ZIP archive:') . ' ' . PMA_getZipError($zip_handle);
}
break;
}
}
zip_close($zip_handle);
return array('error' => $error_message, 'data' => $file_data);
}
开发者ID:skduncan,项目名称:pizza-order,代码行数:68,代码来源:zip_extension.lib.php
示例18: extractZip
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;
}
开发者ID:jamiebatch452,项目名称:Open-Game-Panel,代码行数:57,代码来源:unzip.php
示例19: current
public function current()
{
if (!zip_entry_open($this->resource, $this->entry)) {
throw new SException("Zip file entry can not be read");
}
$buffer = zip_entry_read($this->entry, zip_entry_filesize($this->entry));
zip_entry_close($this->entry);
return $buffer;
}
开发者ID:BackupTheBerlios,项目名称:stato-svn,代码行数:9,代码来源:zip.php
示例20: unzip
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];
}
开发者ID:sjroot,项目名称:DimSim,代码行数:57,代码来源:zip_file_upload.php
注:本文中的zip_entry_close函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论