Zip bestanden maken met pclzip.lib

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ewergreen php

ewergreen php

08/12/2010 16:21:36
Quote Anchor link
Ik wou eens proberen zelf een pagina te maken om mijn directories er iets mooier te laten uitzien. En ook om alle bestanden downloadbaar te maken als .zip. Nu werkt alles redelijk, maar ik kan de zip's niet beschikbaar maken.

Error : PCLZIP_ERR_INVALID_PARAMETER (-3) : Invalid variable type p_filelist

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

<html>
<head>
<?php require_once("filesize_lib.php"); ?>
<?php require_once("pclzip.lib.php");?>

<style type="text/css">

.readme{
width:500px;
height:150px;
background: silver;
overflow-x: hidden;
overflow-y: scroll;
}


</style>

</head>
<body>
<?php
    $readme
= "/readme.txt";
    $download = "downloads";
  // Openen
    $dir = new DirectoryIterator('.');
  // Doorlopen
?>

<table width="960px" border="1px"><tr><td width="185px"><strong>Name</strong></td><td width="50px"><strong>Type</strong></td><td width="50px"><strong>Size</strong></td><td width="125px"><strong>Last Modified</strong></td><td><strong>Short description</strong></td><td width="50px"><strong>Download</strong></td></tr>
<?php
    foreach ($dir as $file)
      {

        if (! $file->isDot()
               &&
$file != ".."
            && $file != "index.php"
            && $file != "filesize_lib.php"
            && $file != "downloads"
            )
        {
        ?>
<tr><td><?php
                  echo '<a href="'.$file.'">'.$file.'</a>';
                ?>
</td><td><?php
                echo filetype($file);
                  ?>
</td><td><?php
                  echo fileORdirSize($file).'<br/>';
                 ?>
</td><td><?php
                  echo date("M j, Y", filemtime($file));    
                  ?>
</td><?php
                      if (filetype($file) == "dir"){
                          ?>
                  
                          <td><div class="readme"><?php
                          echo file_get_contents($file.$readme);    
                          ?>
</div></td><?php
                      } else {
                          ?>
<td>Files don't have descriptions, but can be tested directly from this page.</td><?php
                      }
                  ?>
<td><?php
                    $zip
= new PclZip("tmp/archief.zip");
                        if($zip->create($file) == 0)
                          die("Error : " . $zip->errorInfo(true));                
                  echo '<a href="'.$zip.'">'.$zip.'</a>';
                  ?>
</td></tr><?php
        }
  }

?>

</table>
</body>
</html>
Gewijzigd op 08/12/2010 16:53:07 door Ewergreen php
 
PHP hulp

PHP hulp

22/12/2024 06:19:28
 
- Ariën  -
Beheerder

- Ariën -

08/12/2010 16:27:00
Quote Anchor link
Kan je a.u.b. code-tags gebruiken? Alvast bedankt.

Toevoeging op 08/12/2010 16:27:01:

Kan je a.u.b. code-tags gebruiken? Alvast bedankt.
 
Ewergreen php

ewergreen php

08/12/2010 16:57:15
Quote Anchor link
Sorry, ik vergeet het hier nogal makkelijk. Misschien kan iemand ze ook eens als een knopje toevoegen in de editor?
 
Ewergreen php

ewergreen php

09/12/2010 20:03:46
Quote Anchor link
Niemand een idee?
 
Milo S

Milo S

09/12/2010 20:07:43
Quote Anchor link
Ze staat er de knopjes, maar dan moet je eerst op de knop reageren drukken.
Hoe bedoel je precies beschikbaar stellen?
 
Ewergreen php

ewergreen php

09/12/2010 21:01:43
Quote Anchor link
Uiteindelijk leest dit script alle subdirectories uit de directory waarin het geplaatst wordt uit. Deze subdirectories wil ik beschikbaar stellen om te downloaden, maar om het de gebruiker makkelijk te maken wil ik de directory integraal als zip beschikbaar maken. Ook beter voor m'n bandbreedte trouwens. Helaas maakt dit script met de pclzip.lib de zip niet als download beschikbaar, wat ik wel verwacht had.
 
Ewergreen php

ewergreen php

13/12/2010 10:16:56
Quote Anchor link
Bump
 
John D

John D

13/12/2010 10:32:15
Quote Anchor link
waar komt de variabele p_filelist voor??
 
Ewergreen php

ewergreen php

13/12/2010 10:57:24
Quote Anchor link
John, deze bestaat niet. Blijkbaar geef ik een foutief soort variabele door - althans dat denk ik. Het vreemde is dat ik overal $file gebruik en dat het daar wel werkt.

De fout zit hem in onderstaande, maar waar dat weet ik dus niet. Heb al vanalles geprobeerd maar krijg het niet aan de praat.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
                    $zip
= new PclZip("tmp/archief.zip");
                        if($zip->create($file) == 0)
                          die("Error : " . $zip->errorInfo(true));                
                  echo '<a href="'.$zip.'">'.$zip.'</a>';
                  ?>


Folder "tmp" is door mij aangemaakt in de root. "archief.zip" is fictief, ik weet niet goed wat dit doet.
$file is de file zelf, die werkt bij alle andere bovenstaande en geeft de naam of de bestandsgrootte weer.
Gewijzigd op 13/12/2010 10:59:29 door ewergreen php
 
John D

John D

13/12/2010 11:05:03
Quote Anchor link
misschien ergens in de classe van PclZip deze variabele ?
Ik schat in dat je variabele $file onjuiste info meegeeft naar de class
Probeer/Test eens een hard gecodeerde filename in single quotes.
foutmelding weg? Dan moet je het daarin zoeken.
Gewijzigd op 13/12/2010 11:22:21 door John D
 
Ewergreen php

ewergreen php

13/12/2010 11:21:03
Quote Anchor link
Thanks! Ik geloof dat ik de oorsprong van het probleem gevonden heb. De oplossing daar zal ik misschien nog wat hulp bij nodig hebben... .

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php    // ----- Init
    $v_string_list = array();
    $v_att_list = array();
    $v_filedescr_list = array();
    $p_result_list = array();
    
    // ----- Look if the $p_filelist is really an array
    if (is_array($p_filelist)) {
    
      // ----- Look if the first element is also an array
      //       This will mean that this is a file description entry

      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
        $v_att_list = $p_filelist;
      }

      
      // ----- The list is a list of string names
      else {
        $v_string_list = $p_filelist;
      }
    }


    // ----- Look if the $p_filelist is a string
    else if (is_string($p_filelist)) {
      // ----- Create a list from the string
      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
    }


    // ----- Invalid variable type for $p_filelist
    else {
      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");
      return 0;
    }
?>


Toevoeging op 13/12/2010 11:30:44:

Mmh, ik geef $file door, wat een variable is, maar het moet dus een array zijn. Iemand enig idee hoe ik dat oplos in bovenstaande code?

Toevoeging op 14/12/2010 10:14:38:

Ok, ik vind het niet. Iemand nog suggesties?
Gewijzigd op 13/12/2010 11:21:37 door ewergreen php
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.