Re: ZIP it :o)

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

 



On 6/1/07, Jim Lucas <lists@xxxxxxxxx> wrote:
Auto-Deppe, C. Haensel wrote:
> Hi guys,
>
> thanks to Jim, I made it :o) Here's the source I'm using for testing
> now... it works. I just need to make it less vulnerable ;o)
>
> ----- SNIP -----
> <?
> $nr  = $_GET['nr'];
> if(eregi("../", $nr)) {
> die("Hier wird nicht rumgehackt");
> }
> $directory = '_kfz_images/'.$nr.'/full/';
> $dir = opendir($directory);
> $i = 1;
> while($file = readdir($dir)) {
> $dest = "temp/Auto-Deppe-".$nr."_".$i.".jpg";
> if(eregi("jpg", $file)) {
>  copy($directory.$file, $dest);
>  $i++;
> }
> }
> $now = time();
> header("Content-Type: application/force-download");
> header('Content-Disposition: attachment;
> filename="Auto-Deppe-'.$now.'_Download.zip"');
> exec("zip ".$now."_archive.zip temp/* 2>&1", $output);
> readfile($now."_archive.zip");
> $tempdir = opendir("temp");
> while($tempfile = readdir($tempdir)) {
> if(eregi("jpg", $tempfile)) {
>  unlink("temp/".$tempfile);
> }
> }
> ?>
> ----- SNAP -----
> So I am copying the files to a temp dir, and then zip em up, delete them
> afterwards. I copy them to the dir so I wouldn't have the whole
> /kfz_images/number/full/ structure in the zip).
>
> Aaaanyhow, it works, it does work fast enough, and I am happy :o)
>
> Thanks a bunch, guys, and have a great day!
>
> This is Christian Haensel live from Extertal, Germany. Back to you.
>
> -:oD)=
>
>
> ----- Original Message ----- From: "Tijnema" <tijnema@xxxxxxxxx>
> To: "Chris" <dmagick@xxxxxxxxx>
> Cc: "Auto-Deppe, C. Haensel" <c.haensel@xxxxxxxxxxxxx>;
> <php-general@xxxxxxxxxxxxx>
> Sent: Friday, June 01, 2007 9:27 AM
> Subject: Re:  ZIP it :o)
>
>
>> On 6/1/07, Chris <dmagick@xxxxxxxxx> wrote:
>>> Auto-Deppe, C. Haensel wrote:
>>> > Morning guys,
>>> >
>>> > I have been trying to find an easy to use way to zip an archive on
>>> a > linux
>>> > box running PHP5. Now I've tried the zip-lib.php and others, but they
>>> > always
>>> > throw an error msg.... But that is not the question.
>>> >
>>> > I am looking to use exec("zip archive.zip $directory");  $directory
>>> has
>>> > been
>>> > tried with both full path and relative path ... but that doesn't
>>> work. > I
>>> > don't get an error, it just doesn't create the zip-file...
>>> >
>>> > So, after a day of Google-ing and trying, I thought I might ask you
>>> for
>>> > help.
>>> >
>>> > Cheers for any answers and hints.
>>>
>>> http://pear.php.net/package/Archive_Zip and/or
>>> http://pear.php.net/package/File_Archive
>>>
>>> and please create a *new* message instead of replying to an existing one
>>> and changing the topic. It screws up message threading (in email clients
>>> and in the archives).
>>
>> Not in gmail :)
>>
>> I had same problem lately, wanted also to create zip files from PHP, i
>> tried various build in functions, but i ended up with the exec way.
>> It has been said before, but PHP probably doesn't have the right
>> permissions to write the .zip file, so i would recommend you to write
>> to /tmp first.
>>
>> Tijnema
>>
>>>
>>
>
Here's a link to the zip class that I use

http://www.phpclasses.org/browse/package/945.html

One thing though, your PHP install has to be compiled with "--with-zlib"

That was the only thing that I ran into with this.

Since you are creating files to download, with this class, you don't even need to write them to the
filesystem.  You just create the archive in memory (given that you have enough RAM && php is allowed
to consume as much memory as it would take the create the archive) and then dump it to the browser
Yes, but what happens when you try to create a 1GB archive with 512MB
RAM? (and no swap space too)
or if 100s of people call the same script that creates a 10-20MB file?
If you use the exec way, this will go fine :)

Tijnema

--
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