07. september 2008 - 00:13
Der er
5 kommentarer og 1 løsning
Download af MEGA stor fil
Hej Jeg har en selvudpakkende ZIP fil, som jeg ønsker brugere skal kunne downloade. Den er stor ( ca. 8.5 Mbyte). Fil001 ser sådan ud: ('dwntest.php') <?php if(isset($_GET["file"])) { $path = ""; header("Content-Disposition: attachment; filename=". $_GET["file"] .""); header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($path.$_GET["file"])); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y")))." GMT"); $fp = fopen($path.$_GET["file"],"r"); print fread( $fp, filesize($path.$_GET["file"]) ); fclose($fp); exit(); } ?> fil002 ser sådan ud: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <a href='dwntest.php?file=akj.zip'>Download AKJ</A> </BODY> </HTML> (har prøvet <a href='akj.zip'>Download AKJ</A> ..) Det virkede heller ikke .... ! Det virker og dog ikke: Jeg får download dialogboksen og siger SAVE men får ca. 2,2 Kbyte overført og så er det bare pangggg !!! - og lukket overførsel ... Hvad er det der går galt // hvad gør JEG galt... Kan nogen give mig et godt råd ? (Kan det være noget med en time-out ??? ) Hilsen Kristian
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
07. september 2008 - 00:59
#1
Du læser hele filen ind i RAM - der er sikkert en grænse du dermed overskrider.
07. september 2008 - 01:22
#2
Lukker du lige det andet identiske spørgsmål...
07. september 2008 - 02:53
#3
erstat $fp = fopen($path.$_GET["file"],"r"); print fread( $fp, filesize($path.$_GET["file"]) ); fclose($fp); med readfile( $path . basename( $_GET["file"] ) );
07. september 2008 - 10:36
#4
Svar til Coderk: Den nye kode: <?php if(isset($_GET["file"])) { $path = ""; header("Content-Disposition: attachment; filename=". $_GET["file"] .""); header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($path.$_GET["file"])); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y")))." GMT"); readfile( $path . basename( $_GET["file"] ) ); exit(); } ?> Som du ser er næstsidste linie skiftet ud.. Igen samme problem: Ca. 2,2 Kb overførsel og panggg.. afsluttes. Kan det være det som Erikjacobsen antyder: RAM overskridelse. I så fald kunne en sløjfe måske løse problemet.. PSEUDOKODE: (delphi syntaks:) while NOT Eof($file) begin readblock(file,data); // læs en datablok udsend(data); // send tilæ bruger end; closefile(file); exit; hvor blokstørrelsen er på ca. 2 K Hilsen Kristian
07. september 2008 - 11:56
#5
Rettede koden til følgende: <?php if(isset($_GET["file"])) { $path = ""; $fp = fopen($_GET["file"],"r"); header("Content-Disposition: attachment; filename=". $_GET["file"] .""); header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($path.$_GET["file"])); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); header("Content-Transfer-Encoding: binary\n"); header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y")))." GMT"); ob_flush(); flush(); while(!feof($fp)) { $buffer = fread($fp, 2048); print $buffer; } fclose ($fp); exit(); } ?> og så 'VIOLA' virkede det alt sammen .. Stor lykke i de små hjem. fik også indlagt headeren: ' header("Content-Transfer-Encoding: binary\n"); ' Hilsen Kristian
16. april 2010 - 11:28
#6
Lukker
Vi tilbyder markedets bedste kurser inden for webudvikling