Avatar billede tipsen Nybegynder
06. august 2002 - 16:59 Der er 7 kommentarer og
1 løsning

Næsten gode zip-filer vha. zip-lib

Hej eksperter

Jeg har leget lidt med at lave dynamiske zip-filer og har fundet den zip-lib klasse som der også benyttes i phpmyadmin. Jeg bruger den på følgende måde:

$zipfile = new zipfile(); 

// add the subdirectory ... important!
$zipfile -> add_dir("/"); 

// add the binary data stored in the string 'filedata'
$filename = "./billede.gif";
$fd = fopen ($filename, "rb");
$filedata = fread($fd, filesize($filename));
fclose ($fd);

$zipfile -> add_file($filedata, "testbillede.gif"); 
/*
// the next three lines force an immediate download of the zip file:
header("Content-type: application/octet-stream"); 
header("Content-disposition: attachment; filename=test.zip"); 
echo $zipfile -> file(); 
*/

// OR instead of doing that, you can write out the file to the loca disk like this:
$filename = "output.zip";
$fd = fopen($filename, "wb");
$out = fwrite($fd, $zipfile -> file());
fclose($fd);

// then offer it to the user to download:
?> 
<a href="output.zip">Click here to download the new zip file.</a>

Hvis jeg vælger at kaste zip-filen direkte til download vha. header-kommandoerne som pt. er ud-kommenteret ovenfor får jeg problemer - jeg får bare noget mystisk kode i browseren...

Hvis jeg derimod vælger at gemme zip-filen og i stedet tilbyde den via et link fungerer det fint hvis jeg bruger "Save" til at gemme filen lokalt og derefter åbne den i winzip. Hvis jeg til gengæld vælger "Open" for at åbne den direkte er zip-filen tom!!

Det kan testes på: http://tommyipsen.dk/test/ziptest.php

-er der nogen som kan forklare det!!??
Avatar billede jakoba Nybegynder
06. august 2002 - 17:13 #1
Avatar billede tipsen Nybegynder
06. august 2002 - 23:39 #2
Jeg har erfaret følgende:

IE har nogles issues med at åbne zip-filer on the fly vha. WinZip - selv zipfiler jeg har genereret med autoriserede værktøjer giver mig de samme problemer som mine dynamiske zip-filer!

IE 5.5 har desuden nogle issues med fejlfortolkning af mime-types, hvilket betyder, at den hellere vil have:

Content-disposition: filename=test.zip

i stedet for det korrekte:

Content-disposition: attachment; filename=test.zip

Til sidst viser det sig at Freepaq også har nogle problemer pga de reklamescripts der automatisk hæftes på ens filer - metoden smadrer overførsel af filer vha. http :-/
Avatar billede coderdk Praktikant
07. august 2002 - 15:10 #3
prøv at kalde den med

http://tommyipsen.dk/test/ziptest.php/test.zip

Så kan IE sikkert bedre sluge den :)
Avatar billede tipsen Nybegynder
08. august 2002 - 00:37 #4
coderdk: Den notation forstår jeg ikke!? Hvordan fungerer det?
Avatar billede limemedia Nybegynder
08. august 2002 - 20:06 #5
Prøv at kigge på kommandoen fflush for at sikre at alt indhold også når ud til filen...

http://www.php.net/manual/en/function.fflush.php (med dobbelt f - ikke stavefejl)

Mht IE, så har den det ofte bedre med ms-download som mime fremfor attachment. Lidt kode jeg bruger til force-download

header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Disposition: attachment; filename=".$filearray[$did].";");
header("Content-Type: application/octet-stream");
Avatar billede limemedia Nybegynder
08. august 2002 - 20:09 #6
det coder mener er at du skal linke til selve filen - du kreere den dynamisk og vil eksportere on-the-fly

en mulighed er, at dynamisk oprette filen på din disk og linke til den som coder er inde på. Du skal så være opmærksom på at slette filen efter dig - hvis to brugere zipper forskelligt indhold tilnærmelsesvist samtidigt vil den første blive overskrevet, så du skal styre filnavnene med en form for unikt id - måske en unixtimestamp.

mangler du en hånd med koderne siger du blot til - har dog ikke zip mulighed på min demoserver. Kunne dog lave noget med et system exec kald til tar/gz, men det vil aldrig virke på freecrap *g*
Avatar billede tipsen Nybegynder
30. oktober 2002 - 21:07 #7
jakob og lj: Gider I smide et svar?
Avatar billede tipsen Nybegynder
08. november 2002 - 22:04 #8
nå... -lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester