30. september 2004 - 22:48
Der er
33 kommentarer og 1 løsning
Lave en download funktion.
Hej Eksperter. Jeg har set på mange download sider, at når skal downloade en fil, så ryger man igennem et script, hvorefter man ryger videre til selve download siden, som så automatisk sætter dit download igang. Ved godt at grunden til at man ryger igennem det første script, er for at registrere klikket. Men hvordan sætter man den automatisk til at downloade en fil??
Annonceindlæg fra Sabio
30. september 2004 - 23:04
#1
Se dette smukke eksempel <?php // We'll be outputting a PDF (REMEMBER to change this according to the type of file to send) header('Content-type: application/pdf'); // It will be called downloaded.pdf (The file the user will be asked to save will be called downloade.pdf) header('Content-Disposition: attachment; filename="downloaded.pdf"'); // The size (remember to update path to original file) header("Content-Length: ".filesize("original.pdf")); // The PDF source is in original.pdf (remember to change) readfile('original.pdf'); ?> Morten
30. september 2004 - 23:07
#2
hmm... det ser lidt sort ud.. men skal jeg bare bare bruge jeg skal også have mulighed for at smide normalt html ud...
30. september 2004 - 23:09
#3
okey det var en lidt sort kommentar.. var igang med at spørge om jeg bare skulle bruge content-type og content-disposition... ;)
30. september 2004 - 23:13
#4
hvis du benytter den måde kan du ikke output'e html også... det skal være som dette header('Content-type: [mime-type af fil]'); header('Content-Disposition: attachment; filename=[det navn brugeren vil se]'); header('Content-Length: [størrelse på filen i bytes]'); echo '[Det der skal stå i filen]'; Morten
30. september 2004 - 23:14
#5
Har et mindre søvn-underskud jeg skal have dækket, følger op på spørgsmålet i morgen kl 14-15 stykker Morten
30. september 2004 - 23:15
#6
uh, det kan jeg ikke rigtigt bruge så... for skal kunne smide det sammen med layoutet på siden. og ikke bare på en blank side.
30. september 2004 - 23:15
#7
bare i orden. ;) håber der er andre der kan hjælpe i mens så. :)
30. september 2004 - 23:41
#8
nu har jeg kigget alle bruger notes igennem for header, og det eneste jeg kan få den til, er til at spytte indholdet af filen ud på skærmen... :(
30. september 2004 - 23:50
#9
<?php if(isset($_GET["fil"])){ $path = "/fuld/sti/til/dir/"; header("Content-Disposition: attachment; filename=". $_GET["fil"] .""); header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($path.$_GET["fil"])); 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["fil"],"r"); print fread( $fp, filesize($path.$_GET["fil"]) ); fclose($fp); exit(); } ?> Bruges så når du klikker på et link: <a href="download.php?fil=minfil">Download</a>
30. september 2004 - 23:53
#10
den kode der, skal det være i download.php ? altså for at få en ide om at det lægger i filen som linket refererer til...
30. september 2004 - 23:55
#11
det er fordi at min kunde skal kunne smide sin bruger database ned i en fil, og så skal den automatisk gemmes. altså når han klikker på "Gem brugerliste" , så skal den bare automatisk spytte op med en Save window, som ved et normalt download...
30. september 2004 - 23:56
#12
Ja, bare det, og kun det. Men der bør laves tjek på om filen findes, inden header sættes.
30. september 2004 - 23:57
#13
Du laver filen først, og derefter sætter headers.
30. september 2004 - 23:57
#14
jamen, det er ikke et problem, fordi at scriptet laver selv filen først, ved at smide dataerne fra mysql'en ned i filen, og så downloade den.
30. september 2004 - 23:59
#15
:O)
01. oktober 2004 - 00:01
#16
<?php $path = "addy_til_mit_dir/"; header("Content-Disposition: attachment; filename='file.txt'"); header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($path."file.txt")); 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."file.txt","r"); print fread( $fp, filesize($path."file.txt") ); fclose($fp); exit(); ?> virker ikke, den prøver på at hente selve php filen *G*
01. oktober 2004 - 00:02
#17
også selv om jeg bruger det eksempel du smed, så fejler den.. filen findes ikke...
01. oktober 2004 - 00:04
#18
01. oktober 2004 - 00:12
#20
Osse her?
http://alex.steffend.dk/hentfil.php <?php
$fil = "vbulletin_md5.js";
$path = $_SERVER["DOCUMENT_ROOT"] ."/";
if(isset($_GET["fil"]) && $_GET["fil"] == $fil){
header("Content-Disposition: attachment; filename=". $fil ."");
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($path.$fil));
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.$fil,"r");
print fread( $fp, filesize($path.$fil) );
fclose($fp);
exit();
}
?>
Men definer nu lige den fulde sti til dir hvor fil ligger!!!
01. oktober 2004 - 00:12
#21
01. oktober 2004 - 00:13
#22
nej der virker den.. har selvfølgelig husket den fulde sti... har bare ikke lyst til at smide den ud her.
01. oktober 2004 - 00:16
#23
hmm, ved sgutte du, linket kører på en XP med Apache og PHP Men virker iøvrigt også på en FreeBSD med Apache og PHP
01. oktober 2004 - 00:16
#24
okey nu virker den også på min... men hvorfor renamer den filen den downloader, til scriptet med php koden i??
01. oktober 2004 - 00:17
#25
mener mit webhotel kører linux. ;) det er i hvertfald en *nix af en eller anden art. ;)
01. oktober 2004 - 00:17
#27
Hov, dit link virker jo! Så er der jo ingen problemer!
01. oktober 2004 - 00:19
#28
okey.. my bad... nu går jeg i seng, er sQ blevet for træt. Ikke det seneste script der fejler noget, havde copy/pasted hele koden ind i den gamle, så der stod <?php <?php $fil = "vbulletin_md5.js"; $path = $_SERVER["DOCUMENT_ROOT"] ."/"; if(isset($_GET["fil"]) && $_GET["fil"] == $fil){ header("Content-Disposition: attachment; filename=". $fil .""); header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($path.$fil)); 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.$fil,"r"); print fread( $fp, filesize($path.$fil) ); fclose($fp); exit(); } ?> ?>
01. oktober 2004 - 00:20
#29
såå min fejl, smid et svar. pointne er retmessigt dine, og MEGA mange tak for hjælpen. ;)
01. oktober 2004 - 00:20
#30
Gør den ikke på mit link? Så laver nok rod i den med filnavn! header("Content-Disposition: attachment; filename=". $fil ."");
01. oktober 2004 - 00:21
#31
H,, ok! :O)
01. oktober 2004 - 00:22
#32
sov godt når du når så langt. *G*
01. oktober 2004 - 00:22
#33
Og forresten, Hej fangel! :O) Lang tid siden!
01. oktober 2004 - 14:29
#34
og forresten Hej sukos ;) yep... Morten
Vi tilbyder markedets bedste kurser inden for webudvikling