Zip bestanden maken met pclzip.lib
Error : PCLZIP_ERR_INVALID_PARAMETER (-3) : Invalid variable type p_filelist
Code (php)
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
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
Toevoeging op 08/12/2010 16:27:01:
Kan je a.u.b. code-tags gebruiken? Alvast bedankt.
Sorry, ik vergeet het hier nogal makkelijk. Misschien kan iemand ze ook eens als een knopje toevoegen in de editor?
Niemand een idee?
Hoe bedoel je precies beschikbaar stellen?
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.
Bump
waar komt de variabele p_filelist voor??
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)
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
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
Code (php)
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
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;
}?>
$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