On going ZipArchive saga

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello, again;

I hate to be a pain in the A**, and I hate to have a continuing pain in the A**

Here is another obstruction:

The zip file is being created as far as ZipArchive->open is concerned:
but it isn't (I already discovered that open with ZipArchive::CREATE will return true when nothing is written to the zip file: an empty file, AND the
file will not have been created)

So, here goes:

This is not the result of an async and is not the result of wrapping zipArchive
object instance in a class def on my own.
It is the result of a formal post submission.

I have created a custom method of encoding post vars for this application:

When decoded the pattern is: n-value:l-value|s-value:t-value[|s- value:t-value[|..etc..]

Where the first pair are n- for zip file name to be created and l- for directory location

The rest are files to add (s-) and what to call them (t-) in the zip file.

In the first line $_outPut is the result of decoding my custom encoding scheme

         $_elements = explode('|', $_outPut);
         $_addErrs = array();
         $_zipper = new ZipArchive;
         $_head = explode(':', $_elements[0]);
$_name = str_replace('l-', '', $_head[1]).'/'.str_replace('n-', '', $_head[0]);
         $_dir = dirname($_docRoot.'/'.$_name);
         if(is_writable($_dir))
           {
            $_ret = $_zipper->open($_name, ZipArchive::CREATE);
            if($_ret === true)
              {
               /*
                so now for the items sent to add
               */
               $_outList = array();
               for($_itr = 1; $_itr < count($_elements); $_itr++)
                  {
                   $_sep = explode(':', $_elements[$_itr]);
$_addFile = $_docRoot.'/'.str_replace('s-', '', $_sep[0]); $_outList[count($_outList)] = $_addFile." -> ".str_replace('t-', '', $_sep[1]); $_add = $_zipper->addFile($_addFile, str_replace('t-', '', $_sep[1])); if($_add === false) // perhaps I shouldn't use === here?
                     {
                      $_addErrs[count($_addErrs)] = $_addFile;
                      continue;
                     }
                  }
               $_zipper->close();
$_res = "Zip archive file: ".$_name." created \n".implode($_outList, "\n");
               if(count($_addErrs) > 0)
                 {
                  $_res .= "\nadd errors: ".implode($_addErrs, "\n");
                 }
              }
            else
              {
               require_once("php/zpArchConst.php");
               $_res = $_constER[$_ret];
              }
           }

The output back to the submitting page:
Zip archive file: /dev_lab_current/lab_8/storage/new.zip created
/Library/WebServer/Documents/dev_lab_current/consoleTestGrid.txt -> testGrid.txt

NOTICE: the lack of $_addErrs in the output;

from php manual:
Description
bool ZipArchive::addFile ( string $filename [, string $localname = NULL [, int $start = 0 [, int $length = 0 ]]] )

Adds a file to a ZIP archive from a given path.

....etc....

Return Values

Returns TRUE on success or FALSE on failure.

The whole point is that ZipArchive->addFile is returning true and the files are NOT being added, so the zip file in not actually created

I have been nit picking and chasing bubbles out of this wall paper to death, but maybe I have missed something significant.

Thanks to anyone with the patience for the time and attention
JK



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php





[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux