Scoutnet vzw

We connect scouts!
Het is momenteel 28 Sep 2024 22:37

Alle tijden zijn UTC + 1 uur




Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 2 berichten ] 
Auteur Bericht
 Titel: zip-class
BerichtGeplaatst: 03 Mrt 2006 15:23 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 02 Feb 2004 0:00
Berichten: 173
Ik heb een class gevonden die je toelaat automatisch een map te downloaden als een zip-bestand. Als ik het scriptje test, krijg ik enkel een witte pagina te zien. Ik ben nog niet vertrouwd met classes, en kan geen oplossing vinden. Iemand raad?

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

CreateZipFile.php
Code:
<?php

/**
 * Class to dynamically create a zip file (archive)
 *
 * @author Rochak Chauhan
 */

class createZip  { 

   public $compressedData = array();
   public $centralDirectory = array(); // central directory   
   public $endOfCentralDirectory = "\x50\x4b\x05\x06\x00\x00\x00\x00"; //end of Central directory record
   public $oldOffset = 0;

   /**
    * Function to create the directory where the file(s) will be unzipped
    *
    * @param $directoryName string
    *
    */
   
   public function addDirectory($directoryName) {
      $directoryName = str_replace("\\", "/", $directoryName); 

      $feedArrayRow = "\x50\x4b\x03\x04";
      $feedArrayRow .= "\x0a\x00";   
      $feedArrayRow .= "\x00\x00";   
      $feedArrayRow .= "\x00\x00";   
      $feedArrayRow .= "\x00\x00\x00\x00";

      $feedArrayRow .= pack("V",0);
      $feedArrayRow .= pack("V",0);
      $feedArrayRow .= pack("V",0);
      $feedArrayRow .= pack("v", strlen($directoryName) );
      $feedArrayRow .= pack("v", 0 );
      $feedArrayRow .= $directoryName; 

      $feedArrayRow .= pack("V",0);
      $feedArrayRow .= pack("V",0);
      $feedArrayRow .= pack("V",0);

      $this -> compressedData[] = $feedArrayRow;
      
      $newOffset = strlen(implode("", $this->compressedData));

      $addCentralRecord = "\x50\x4b\x01\x02";
      $addCentralRecord .="\x00\x00";   
      $addCentralRecord .="\x0a\x00";   
      $addCentralRecord .="\x00\x00";   
      $addCentralRecord .="\x00\x00";   
      $addCentralRecord .="\x00\x00\x00\x00";
      $addCentralRecord .= pack("V",0);
      $addCentralRecord .= pack("V",0);
      $addCentralRecord .= pack("V",0);
      $addCentralRecord .= pack("v", strlen($directoryName) );
      $addCentralRecord .= pack("v", 0 );
      $addCentralRecord .= pack("v", 0 );
      $addCentralRecord .= pack("v", 0 );
      $addCentralRecord .= pack("v", 0 );
      $ext = "\x00\x00\x10\x00";
      $ext = "\xff\xff\xff\xff"; 
      $addCentralRecord .= pack("V", 16 );

      $addCentralRecord .= pack("V", $this -> oldOffset );
      $this -> oldOffset = $newOffset;

      $addCentralRecord .= $directoryName; 

      $this -> centralDirectory[] = $addCentralRecord; 
   }   
   
   /**
    * Function to add file(s) to the specified directory in the archive
    *
    * @param $directoryName string
    *
    */
   
   public function addFile($data, $directoryName)   {
 
      $directoryName = str_replace("\\", "/", $directoryName); 
   
      $feedArrayRow = "\x50\x4b\x03\x04";
      $feedArrayRow .= "\x14\x00";   
      $feedArrayRow .= "\x00\x00";   
      $feedArrayRow .= "\x08\x00";   
      $feedArrayRow .= "\x00\x00\x00\x00";

      $uncompressedLength = strlen($data); 
      $compression = crc32($data); 
      $gzCompressedData = gzcompress($data); 
      $gzCompressedData = substr( substr($gzCompressedData, 0, strlen($gzCompressedData) - 4), 2);
      $compressedLength = strlen($gzCompressedData); 
      $feedArrayRow .= pack("V",$compression);
      $feedArrayRow .= pack("V",$compressedLength);
      $feedArrayRow .= pack("V",$uncompressedLength);
      $feedArrayRow .= pack("v", strlen($directoryName) );
      $feedArrayRow .= pack("v", 0 );
      $feedArrayRow .= $directoryName; 

      $feedArrayRow .= $gzCompressedData; 

      $feedArrayRow .= pack("V",$compression);
      $feedArrayRow .= pack("V",$compressedLength);
      $feedArrayRow .= pack("V",$uncompressedLength);

      $this -> compressedData[] = $feedArrayRow;

      $newOffset = strlen(implode("", $this->compressedData));

      $addCentralRecord = "\x50\x4b\x01\x02";
      $addCentralRecord .="\x00\x00";   
      $addCentralRecord .="\x14\x00";   
      $addCentralRecord .="\x00\x00";   
      $addCentralRecord .="\x08\x00";   
      $addCentralRecord .="\x00\x00\x00\x00";
      $addCentralRecord .= pack("V",$compression);
      $addCentralRecord .= pack("V",$compressedLength);
      $addCentralRecord .= pack("V",$uncompressedLength);
      $addCentralRecord .= pack("v", strlen($directoryName) );
      $addCentralRecord .= pack("v", 0 );
      $addCentralRecord .= pack("v", 0 );
      $addCentralRecord .= pack("v", 0 );
      $addCentralRecord .= pack("v", 0 );
      $addCentralRecord .= pack("V", 32 );

      $addCentralRecord .= pack("V", $this -> oldOffset );
      $this -> oldOffset = $newOffset;

      $addCentralRecord .= $directoryName; 

      $this -> centralDirectory[] = $addCentralRecord; 
   }

   /**
    * Fucntion to return the zip file
    *
    * @return zipfile (archive)
    */

   public function getZippedfile() {

      $data = implode("", $this -> compressedData); 
      $controlDirectory = implode("", $this -> centralDirectory); 

      return   
         $data. 
         $controlDirectory. 
         $this -> endOfCentralDirectory. 
         pack("v", sizeof($this -> centralDirectory)).     
         pack("v", sizeof($this -> centralDirectory)).     
         pack("V", strlen($controlDirectory)).             
         pack("V", strlen($data)).               
         "\x00\x00";                             
   }

   /**
    *
    * Function to force the download of the archive as soon as it is created
    *
    * @param archiveName string - name of the created archive file
    */

   public function forceDownload($archiveName) {
      $headerInfo = '';
      
      if(ini_get('zlib.output_compression')) {
         ini_set('zlib.output_compression', 'Off');
      }

      // Security checks
      if( $archiveName == "" ) {
         echo "<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> The download file was NOT SPECIFIED.</body></html>";
         exit;
      }
      elseif ( ! file_exists( $archiveName ) ) {
         echo "<html><title>Public Photo Directory - Download </title><body><BR><B>ERROR:</B> File not found.</body></html>";
         exit;
      }

      header("Pragma: public");
      header("Expires: 0");
      header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
      header("Cache-Control: private",false);
      header("Content-Type: application/zip");
      header("Content-Disposition: attachment; filename=".basename($archiveName).";" );
      header("Content-Transfer-Encoding: binary");
      header("Content-Length: ".filesize($archiveName));
      readfile("$archiveName");
      
    }

}
?>



exampleScript.php
Code:
<?php
include_once("createZipFile.php");
$createZip = new createZip; 

$createZip -> addDirectory("dir/");

$fileContents = file_get_contents("img.jpg"); 
$createZip -> addFile($fileContents, "dir/img.jpg"); 


$fileName = "archive.zip";
$fd = fopen ($fileName, "wb");
$out = fwrite ($fd, $createZip -> getZippedfile());
fclose ($fd);


$createZip -> forceDownload($fileName);
@unlink($fileName);
?>


Omhoog
 Profiel  
 
 Titel: Re: zip-class
BerichtGeplaatst: 06 Mrt 2006 20:40 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 29 Sep 2002 23:00
Berichten: 21
euh...
op het eerste zicht:
exampleScript.php
Code:
include_once("createZipFile.php");

dit komt niet overeen met de naam die aan het eerste bestand gegeven werd (CreateZipFile.php) , en zal waarschijnlijk een include fout geven.

als het nog een witte pagina geeft, misschien eens de errors laten weergeven. Zet het dees bovenaan exampleScript.php:
Code:
ini_set('display_errors', true);
ini_set ('error_reporting', E_ALL);

en laat het weten. Misschien heb ik straks of morgen wat meer tijd :)


Omhoog
 Profiel  
 
Berichten weergeven van de afgelopen:  Sorteer op  
Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 2 berichten ] 

Alle tijden zijn UTC + 1 uur


Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten


U mag geen nieuwe onderwerpen plaatsen in dit forum
U mag geen reacties plaatsen op onderwerpen in dit forum
U mag uw berichten niet wijzigen in dit forum
U mag uw berichten niet verwijderen in dit forum
U mag geen bijlagen plaatsen in dit forum

Zoeken naar:
Ga naar:  
cron
Powered by phpBB® Forum Software © phpBB Group
Vertaald door phpBBservice.nl.