当前位置: 首页>>代码示例>>PHP>>正文


PHP PclZipUtilRename函数代码示例

本文整理汇总了PHP中PclZipUtilRename函数的典型用法代码示例。如果您正苦于以下问题:PHP PclZipUtilRename函数的具体用法?PHP PclZipUtilRename怎么用?PHP PclZipUtilRename使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了PclZipUtilRename函数的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: privMerge


//.........这里部分代码省略.........
         return $v_result;
     }
     // ----- Go to beginning of File
     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");
     @rewind($p_archive_to_add->zip_fd);
     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 5, "Position in archive_to_add : ".ftell($p_archive_to_add->zip_fd)."'");
     // ----- Creates a temporay file
     $v_zip_temp_name = PCLZIP_TEMPORARY_DIR . uniqid('pclzip-') . '.tmp';
     // ----- Open the temporary file in write mode
     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 3, "Open file in binary read mode");
     if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) {
         $this->privCloseFd();
         $p_archive_to_add->privCloseFd();
         PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \'' . $v_zip_temp_name . '\' in binary write mode');
         // ----- Return
         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, PclZip::errorCode(), PclZip::errorInfo());
         return PclZip::errorCode();
     }
     // ----- Copy the files from the archive to the temporary file
     // TBC : Here I should better append the file and go back to erase the central dir
     $v_size = $v_central_dir['offset'];
     while ($v_size != 0) {
         $v_read_size = $v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE;
         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
         $v_buffer = fread($this->zip_fd, $v_read_size);
         @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
         $v_size -= $v_read_size;
     }
     // ----- Copy the files from the archive_to_add into the temporary file
     $v_size = $v_central_dir_to_add['offset'];
     while ($v_size != 0) {
         $v_read_size = $v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE;
         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
         $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size);
         @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
         $v_size -= $v_read_size;
     }
     // ----- Store the offset of the central dir
     $v_offset = @ftell($v_zip_temp_fd);
     //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "New offset of central dir : $v_offset");
     // ----- Copy the block of file headers from the old archive
     $v_size = $v_central_dir['size'];
     while ($v_size != 0) {
         $v_read_size = $v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE;
         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
         $v_buffer = @fread($this->zip_fd, $v_read_size);
         @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
         $v_size -= $v_read_size;
     }
     // ----- Copy the block of file headers from the archive_to_add
     $v_size = $v_central_dir_to_add['size'];
     while ($v_size != 0) {
         $v_read_size = $v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE;
         //--(MAGIC-PclTrace)--//PclTraceFctMessage(__FILE__, __LINE__, 4, "Read $v_read_size bytes");
         $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size);
         @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
         $v_size -= $v_read_size;
     }
     // ----- Merge the file comments
     $v_comment = $v_central_dir['comment'] . ' ' . $v_central_dir_to_add['comment'];
     // ----- Calculate the size of the (new) central header
     $v_size = @ftell($v_zip_temp_fd) - $v_offset;
     // ----- Swap the file descriptor
     // Here is a trick : I swap the temporary fd with the zip fd, in order to use
     // the following methods on the temporary fil and not the real archive fd
     $v_swap = $this->zip_fd;
     $this->zip_fd = $v_zip_temp_fd;
     $v_zip_temp_fd = $v_swap;
     // ----- Create the central dir footer
     if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries'] + $v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) {
         $this->privCloseFd();
         $p_archive_to_add->privCloseFd();
         @fclose($v_zip_temp_fd);
         $this->zip_fd = null;
         // ----- Reset the file list
         unset($v_header_list);
         // ----- Return
         //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
         return $v_result;
     }
     // ----- Swap back the file descriptor
     $v_swap = $this->zip_fd;
     $this->zip_fd = $v_zip_temp_fd;
     $v_zip_temp_fd = $v_swap;
     // ----- Close
     $this->privCloseFd();
     $p_archive_to_add->privCloseFd();
     // ----- Close the temporary file
     @fclose($v_zip_temp_fd);
     // ----- Delete the zip file
     // TBC : I should test the result ...
     @unlink($this->zipname);
     // ----- Rename the temporary file
     // TBC : I should test the result ...
     //@rename($v_zip_temp_name, $this->zipname);
     PclZipUtilRename($v_zip_temp_name, $this->zipname);
     // ----- Return
     //--(MAGIC-PclTrace)--//PclTraceFctEnd(__FILE__, __LINE__, $v_result);
     return $v_result;
 }
开发者ID:kondrat-shmoylov,项目名称:Pagetest,代码行数:101,代码来源:pclzip.lib.php

示例2: privAdd


//.........这里部分代码省略.........
     if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) {
         $this->_za->privCloseFd();
         $this->_za->privSwapBackMagicQuotes();
         PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \'' . $v_zip_temp_name . '\' in binary write mode');
         // ----- Return
         return PclZip::errorCode();
     }
     // ----- Copy the files from the archive to the temporary file
     // TBC : Here I should better append the file and go back to erase the central dir
     $v_size = $v_central_dir['offset'];
     while ($v_size != 0) {
         $v_read_size = $v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE;
         $v_buffer = fread($this->_za->zip_fd, $v_read_size);
         @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size);
         $v_size -= $v_read_size;
     }
     // ----- Swap the file descriptor
     // Here is a trick : I swap the temporary fd with the zip fd, in order to use
     // the following methods on the temporary fil and not the real archive
     $v_swap = $this->_za->zip_fd;
     $this->_za->zip_fd = $v_zip_temp_fd;
     $v_zip_temp_fd = $v_swap;
     // ----- Add the files
     $v_header_list = array();
     if (($v_result = $this->_za->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) {
         fclose($v_zip_temp_fd);
         $this->_za->privCloseFd();
         @unlink($v_zip_temp_name);
         $this->_za->privSwapBackMagicQuotes();
         // ----- Return
         return $v_result;
     }
     // ----- Store the offset of the central dir
     $v_offset = @ftell($this->_za->zip_fd);
     // ----- Copy the block of file headers from the old archive
     $v_size = $v_central_dir['size'];
     while ($v_size != 0) {
         $v_read_size = $v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE;
         $v_buffer = @fread($v_zip_temp_fd, $v_read_size);
         @fwrite($this->_za->zip_fd, $v_buffer, $v_read_size);
         $v_size -= $v_read_size;
     }
     // ----- Create the Central Dir files header
     for ($i = 0, $v_count = 0; $i < sizeof($v_header_list); $i++) {
         // ----- Create the file header
         if ($v_header_list[$i]['status'] == 'ok') {
             if (($v_result = $this->_za->privWriteCentralFileHeader($v_header_list[$i])) != 1) {
                 fclose($v_zip_temp_fd);
                 $this->_za->privCloseFd();
                 @unlink($v_zip_temp_name);
                 $this->_za->privSwapBackMagicQuotes();
                 // ----- Return
                 return $v_result;
             }
             $v_count++;
         }
         // ----- Transform the header to a 'usable' info
         $this->_za->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]);
     }
     // ----- Zip file comment
     $v_comment = $v_central_dir['comment'];
     if (isset($p_options[PCLZIP_OPT_COMMENT])) {
         $v_comment = $p_options[PCLZIP_OPT_COMMENT];
     }
     if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) {
         $v_comment = $v_comment . $p_options[PCLZIP_OPT_ADD_COMMENT];
     }
     if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) {
         $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT] . $v_comment;
     }
     // ----- Calculate the size of the central header
     $v_size = @ftell($this->_za->zip_fd) - $v_offset;
     // ----- Create the central dir footer
     if (($v_result = $this->_za->privWriteCentralHeader($v_count + $v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) {
         // ----- Reset the file list
         unset($v_header_list);
         $this->_za->privSwapBackMagicQuotes();
         // ----- Return
         return $v_result;
     }
     // ----- Swap back the file descriptor
     $v_swap = $this->_za->zip_fd;
     $this->_za->zip_fd = $v_zip_temp_fd;
     $v_zip_temp_fd = $v_swap;
     // ----- Close
     $this->_za->privCloseFd();
     // ----- Close the temporary file
     @fclose($v_zip_temp_fd);
     // ----- Magic quotes trick
     $this->_za->privSwapBackMagicQuotes();
     // ----- Delete the zip file
     // TBC : I should test the result ...
     @unlink($this->_za->zipname);
     // ----- Rename the temporary file
     // TBC : I should test the result ...
     //@rename($v_zip_temp_name, $this->zipname);
     PclZipUtilRename($v_zip_temp_name, $this->_za->zipname);
     // ----- Return
     return $v_result;
 }
开发者ID:elephantcode,项目名称:elephantcode,代码行数:101,代码来源:zbzippclzip.php


注:本文中的PclZipUtilRename函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。