[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

php unzip to other dir

Posted on 2013-01-31
5
Medium Priority
?
342 Views
Last Modified: 2013-02-06
i been using the unzip code for about a year and it works great. But now i want to have the code the unzip the file to a dir i want and not in the dir the file is in.


copy('01-31-13_backup.zip', '../Demo/01-31-13_backup.zip');

$file = '../Demo/01-31-13_backup.zip';


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 mkdirr($pn,$mode=null) {

  if(is_dir($pn)||empty($pn)) return true;
  $pn=str_replace(array('/', ''),DIRECTORY_SEPARATOR,$pn);

  if(is_file($pn)) {trigger_error('mkdirr() File exists', E_USER_WARNING);return false;}

  $next_pathname=substr($pn,0,strrpos($pn,DIRECTORY_SEPARATOR));
  if(mkdirr($next_pathname,$mode)) {if(!file_exists($pn)) {return mkdir($pn,$mode);} }
  return false;
}

unzip('../Demo/'.$file);

Open in new window

0
Comment
Question by:armasmike
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 12

Expert Comment

by:sivagnanam chandrakanth
ID: 38842928
see this http://stackoverflow.com/questions/5256551/unzip-the-file-using-php-collapses-the-zip-file-into-one-folder

fopen and fwrite should come after using fopen of the required directory, in that way you can place the files in specified folder
0
 
LVL 9

Expert Comment

by:rinfo
ID: 38843170
Have you tried zip_extractto( extract directory)
You can have a  look here
http://php.net/manual/en/ziparchive.extractto.php
for details.
0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 38843584
This may be oversimplifying the question, but why not just move the ZIP archive to the destination directory location you want, then extract the files right there?
0
 

Author Comment

by:armasmike
ID: 38844508
Ray_Paseur

I was wanting to do just that. this is why i have

copy('01-31-13_backup.zip', '../Demo/01-31-13_backup.zip');

$file = '../Demo/01-31-13_backup.zip';

Open in new window


and

unzip('../Demo/'.$file);

Open in new window


at the bottom. I was thinking it would do just that unzip in the Demo dir. But it doesn't what am i missing.
0
 
LVL 111

Accepted Solution

by:
Ray Paseur earned 2000 total points
ID: 38844522
I don't know what you're missing and I don't really have anything other than suggestions (no time to test this process any time soon).  So here is my suggestion.  

1. Unzip the archive wherever it happens to be.  That part already works, so no magic is needed.

2. After Unzip, copy the files to the destination directory.

3. Unlink the files and the ZIP archive.
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Is your Office 365 signature not working the way you want it to? Are signature updates taking up too much of your time? Let's run through the most common problems that an IT administrator can encounter when dealing with Office 365 email signatures.
There are times when I have encountered the need to decompress a response from a PHP request. This is how it's done, but you must have control of the request and you can set the Accept-Encoding header.
In this tutorial viewers will learn how to embed an audio file in a webpage using HTML5. Ensure your DOCTYPE declaration is set to HTML5: : The declaration should display (CODE) HTML5 is supported by the most recent versions of all major browsers…
The viewer will learn how to dynamically set the form action using jQuery.
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question