Hromadný download obrázků, ZIP?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
walker
Člen | 5
+
0
-

Zdravím všechny, narazil jsem na menší problém, který pro mě jako začátečníka představuje nepřekonatelnou horu :-), potřebuji vytvořit hromadný download fotek ze své galerie, podle všeho je nutné fotky nejprve zazipovat a pak stáhnout. Podle rady co tu byla před rokem se snažím použít tento návod

vložil jsem tedy obě části z návodu do gallery presentru a změnil pouze druhou část

<?php
	public function actionDownload() {

            $files_to_zip = array(
              'server/uploads/cache/100px-Uzushiogakure.png',
              'server/uploads/cache/300px-Rinnegan.png'
            );
            //if true, good; if false, zip creation failed
            $result = self::create_zip($files_to_zip,'my-archive.zip');

        }
?>

čím jsem odstranil chybu Call to undefined function create_zip()

no jenže po zavolání download se zip nějak nevytvoří i když se žádná chyba nikde neobjeví, mám měnit ještě něco jiného, nebo sem na něco zapomněl případně mám použít něco jiného? děkuji za radu

Tomas Jancik
Člen | 103
+
0
-

mas pravo k zapisu k toho ZIPu?

rekl bych ze se snazis ten zip ulozit do adresare, kde mas aktualni presenter. a tam asi pravo zapisu mit nebudes…

walker
Člen | 5
+
0
-

no jestli sem to správně pochopil tak cesta se určuje v parametru $destination = '' ??… takže tam stačí napsat něco jako $destination = '$basePath' ??… nebo jinak? :-) nemáš, nebo nemá to někdo už řešeno abych se mohl kouknout??

Editoval walker (28. 5. 2012 15:09)

vasekboch
Člen | 8
+
0
-

Zkusil bych nastavit abosolutní cesty. Pokud bys měl nějak podivně nastavenej server, mohlo by se ti to objevit někde jinde než čekáš.

walker
Člen | 5
+
0
-

Prozkoušel sem co šlo, a mělo by to být v pořádku, ale pořád nic :/ .. přikládám kód z gallery presentru, script nevypíše žádnou chybu ani debug hlášku, ale soubor nevytvoří, případné rady jak to dál odladit vřele přivítám :-)

cesta k obrázkům prozkoušena a je validní, cesta v $destination prozkoušena všechna možná a soubor nikde :-)

<?php

public function create_zip($files = array(),$destination = '../www/server/uploads/',$overwrite = false) {
                //if the zip file already exists and overwrite is false, return false
                if(file_exists($destination) && !$overwrite) { return false; }
                //vars
                $valid_files = array();
                //if files were passed in...
                if(is_array($files)) {
                        //cycle through each file
                        foreach($files as $file) {
                                //make sure the file exists
                                if(file_exists($file)) {
                                        $valid_files[] = $file;
                                } else {
                                    echo 'error';
                                }
                        }
                }
                //if we have good files...
                if(count($valid_files)) {
                        //create the archive
                        $zip = new ZipArchive();
                        if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
                                return false;
                        } else { echo 'error'; }
                        //add the files
                        foreach($valid_files as $file) {
                                $zip->addFile($file,$file);
                        }
                        //debug
                        echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;

                        //close the zip -- done!
                        $zip->close();

                        //check to make sure the file exists
                        return file_exists($destination);
                }
                else
                {
                        return false;
                }
        }

        public function actionDownload() {

            // pro kontrolu jestli je cesta k obrázku správná ;-)
            $image = NImage::fromFile('../www/server/uploads/cache/100px-Uzushiogakure.png');

            $files_to_zip = array(
              '../www/server/uploads/cache/100px-Uzushiogakure.png',
              '../www/server/uploads/cache/300px-Rinnegan.png'
            );
            //if true, good; if false, zip creation failed
            $result = self::create_zip($files_to_zip,'my-archive.zip');

            //$this->redirect('default');
        }

?>

Editoval walker (28. 5. 2012 19:17)

Jan Tvrdík
Nette guru | 2595
+
0
-

Prosím, prosím. Nauč se první PHP.

walker
Člen | 5
+
0
-

už to funguje, prosím o lock/delete díky