Skrevet tir. d. 17. januar 2006 kl. 21:52:28| #1
Du kan vel skrive ud hvilken den er i gang med?
<html>
<head>
<title>Extracting</title>
</head>
<body>
<?php
$error = array();
if ( $zip = zip_open( 'fil.zip' ) )
{
while ( $zipfil = zip_read( $zip ) )
{
print "Extracting <b>" . zip_entry_name( $zip_entry ) . "</b> "
. zip_entry_compressedsize( $zip_entry ) . " bytes...\n";
flush();
if ( zip_entry_open( $zip, $zipfil, 'r' ) )
{
if ( $fp = fopen( zip_entry_name( $zip_entry ), 'wb' ) )
{
$buf = zip_entry_read( $zipfil, zip_entry_filesize( $zip_entry ) );
fwrite( $fp, $buf );
fclose( $fp );
print "OK!<br>\n";
flush();
}
else
{
print "Fejl!<br>\n";
}
zip_entry_close( $zipfil );
}
}
zip_close($zip);
}
?>
<br>
<b>Done!</b>
</body>
</html>
Skrevet tir. d. 17. januar 2006 kl. 21:53:10| #2
Doh! Der var et par fejl:
<html>
<head>
<title>Extracting</title>
</head>
<body>
<?php
$error = array();
if ( $zip = zip_open( 'fil.zip' ) )
{
while ( $zipfil = zip_read( $zip ) )
{
print "Extracting <b>" . zip_entry_name( $zipfil ) . "</b> "
. zip_entry_compressedsize( $zipfil ) . " bytes...\n";
flush();
if ( zip_entry_open( $zip, $zipfil, 'r' ) )
{
if ( $fp = fopen( zip_entry_name( $zipfil ), 'wb' ) )
{
$buf = zip_entry_read( $zipfil, zip_entry_filesize( $zipfil ) );
fwrite( $fp, $buf );
fclose( $fp );
print "OK!<br>\n";
flush();
}
else
{
print "Fejl!<br>\n";
}
zip_entry_close( $zipfil );
}
}
zip_close($zip);
}
?>
<br>
<b>Done!</b>
</body>
</html>
Skrevet tir. d. 17. januar 2006 kl. 21:53:36| #3
Bemærk dog at det script afhænger af et PHP-modul der ikke er aktiveret som standard. Det er ikke sikkert du har mulighed for at aktivere det på din server.
Skrevet tir. d. 17. januar 2006 kl. 21:58:46| #4
Det er korrekt hvad pidgeot skriver. Der findes dog nogle zip-klasser i ren PHP som ikke kræver zip er aktiveret i php :)
Skrevet tir. d. 17. januar 2006 kl. 22:22:01| #5
coderdk hva mener du?
hvor kan jeg vælge den "mappe/sti" hvor den skal pakke filen ud til?
Skrevet tir. d. 17. januar 2006 kl. 22:23:44| #6
if ( $fp = fopen( zip_entry_name( $zipfil ), 'wb' ) )
http://dk.php.net/ (...)Altså hvis du ville pakke ud i "test":
if ( $fp = fopen( 'test/' . zip_entry_name( $zipfil ), 'wb' ) )
Skrevet tir. d. 17. januar 2006 kl. 23:04:25| #7
Det virker ikke... har chmod'et mappen test til 777 osv men får bare "fejl"
Er det muligt at lavet et script der kan slette den mappe man vælger hvorefter den pakker filen ud til mappen ?
Skrevet tir. d. 17. januar 2006 kl. 23:14:15| #8
Kommer der ingen anden fejlmelding?
Skrevet ons. d. 18. januar 2006 kl. 01:40:00| #9
http://phpfm.sourceforge.net/ du kunne ikke bruge et færdigt script i stedet? (Man skal nu være forsigtig med den slags - en mappe bør f.eks. ikke være '777' uden en god grund...)
Skrevet ons. d. 18. januar 2006 kl. 16:18:10| #10
Alleykat det er ikke lige sådan noget som det du henviser til jeg skal bruge.
Skrevet ons. d. 18. januar 2006 kl. 17:31:33| #11
coderdk jeg får følgende besked:
Extracting ssserver/winclient/skin/skin.cfg 680 bytes... Fejl!
Extracting ssserver/winclient/skin/ssclient.ico 1477 bytes... Fejl!
Extracting ssserver/winclient/ssc.exe 335253 bytes... Fejl!
Done!
Skrevet ons. d. 18. januar 2006 kl. 20:44:13| #12
Ok, findes ssserver/winclient/skin stien, og er den skrivbar hele vejen igennem?
Skrevet ons. d. 18. januar 2006 kl. 21:02:38| #13
nej for det er jo det den skal pakke ud. det er ikke kun en fil den skal pakke ud men en masse mapper også
Skrevet ons. d. 18. januar 2006 kl. 21:08:39| #14
Prøv med:
<html>
<head>
<title>Extracting</title>
</head>
<body>
<?php
function forceDir( $path )
{
// Recursively create directories
if ( file_exists( $path ) )
{
return 1;
}
if ( forceDir( dirname( $path ) ) )
{
return mkdir( $path );
}
else
{
return 0;
}
}
if ( $zip = zip_open( 'fil.zip' ) )
{
while ( $zipfil = zip_read( $zip ) )
{
print "Extracting <b>" . zip_entry_name( $zipfil ) . "</b> "
. zip_entry_compressedsize( $zipfil ) . " bytes...\n";
flush();
if ( zip_entry_open( $zip, $zipfil, 'r' ) )
{
$target = zip_entry_name( $zipfil );
if ( forceDir( dirname( $target ) ) && $fp = fopen( $target, 'wb' ) )
{
$buf = zip_entry_read( $zipfil, zip_entry_filesize( $zipfil ) );
fwrite( $fp, $buf );
fclose( $fp );
print "OK!<br>\n";
flush();
}
else
{
print "Fejl!<br>\n";
}
zip_entry_close( $zipfil );
}
}
zip_close($zip);
}
?>
<br>
<b>Done!</b>
</body>
</html>
Skrevet ons. d. 18. januar 2006 kl. 21:26:27| #15
Extracting ssserver/ 0 bytes... OK!
Extracting ssserver/.bashrc 98 bytes... Fejl!
Extracting ssserver/.bash_logout 182 bytes... Fejl!
Extracting ssserver/.bash_profile 154 bytes... Fejl!
Extracting ssserver/.emacs 255 bytes... Fejl!
Extracting ssserver/.steam/ 0 bytes... Fejl!
Extracting ssserver/.steam/ClientRegistry.blob 656 bytes... Fejl!
Extracting ssserver/.zshrc 394 bytes... Fejl!
Extracting ssserver/banner.jpg 1764 bytes... Fejl!
Extracting ssserver/banner.jpg3 4224 bytes... Fejl!
Extracting ssserver/banner.jpgorg 5081 bytes... Fejl!
Nu får jeg ok ved den første
Skrevet ons. d. 18. januar 2006 kl. 21:32:19| #16
Hmm den ser underlig ud - Som om den første entry er et tomt bibliotek? Kan du prøve med den fra før; den med "Extracting ssserver/winclient/skin/skin.cfg" i?
Skrevet ons. d. 18. januar 2006 kl. 21:32:38| #17
Glemte at spørge om den oprettede ssserver-folderen?
Skrevet ons. d. 18. januar 2006 kl. 21:34:35| #18
den opretter en fil med navnet men ikke en mappe..
Skrevet man. d. 23. januar 2006 kl. 20:46:01| #19
Skrevet man. d. 23. januar 2006 kl. 21:03:40| #20
hehe well, jeg kan ikke lige overskue hvorfor den laver folderen som en fil, og ikke kommer med andre fejl...
Skrevet man. d. 23. januar 2006 kl. 21:10:31| #21
kan det være pga den mappe den laver ikke er skrivebar?
Skrevet man. d. 23. januar 2006 kl. 22:07:30| #22
Det burde den være. Mode i mkdir() er 0777 som default, svjh. Men du kan da prøve at ændre mkdir( $path ); til mkdir( $path, 0777 );
Skrevet søn. d. 30. april 2006 kl. 00:09:17| #23
Fik aldrig en brugbar løsning så jeg lukker