Avatar billede blackscorpion Nybegynder
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??
Avatar billede fangel Nybegynder
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
Avatar billede blackscorpion Nybegynder
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...
Avatar billede blackscorpion Nybegynder
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... ;)
Avatar billede fangel Nybegynder
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
Avatar billede fangel Nybegynder
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
Avatar billede blackscorpion Nybegynder
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.
Avatar billede blackscorpion Nybegynder
30. september 2004 - 23:15 #7
bare i orden. ;) håber der er andre der kan hjælpe i mens så. :)
Avatar billede blackscorpion Nybegynder
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... :(
Avatar billede sukos Juniormester
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>
Avatar billede blackscorpion Nybegynder
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...
Avatar billede blackscorpion Nybegynder
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...
Avatar billede sukos Juniormester
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.
Avatar billede sukos Juniormester
30. september 2004 - 23:57 #13
Du laver filen først, og derefter sætter headers.
Avatar billede blackscorpion Nybegynder
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.
Avatar billede sukos Juniormester
30. september 2004 - 23:59 #15
:O)
Avatar billede blackscorpion Nybegynder
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*
Avatar billede blackscorpion Nybegynder
01. oktober 2004 - 00:02 #17
også selv om jeg bruger det eksempel du smed, så fejler den.. filen findes ikke...
Avatar billede blackscorpion Nybegynder
01. oktober 2004 - 00:04 #18
Avatar billede blackscorpion Nybegynder
01. oktober 2004 - 00:11 #19
okey nu spytter den så filens indhold ud...

http://www.alabit.dk/file_download.php?filename=file.txt

fatter hat og briller af det her... :(
Avatar billede sukos Juniormester
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!!!
Avatar billede blackscorpion Nybegynder
01. oktober 2004 - 00:12 #21
okey tilbage til

http://www.alabit.dk/file_download.php?fil=file.txt

orginal scriptet...
Avatar billede blackscorpion Nybegynder
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.
Avatar billede sukos Juniormester
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
Avatar billede blackscorpion Nybegynder
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??
Avatar billede blackscorpion Nybegynder
01. oktober 2004 - 00:17 #25
mener mit webhotel kører linux. ;)

det er i hvertfald en *nix af en eller anden art. ;)
Avatar billede blackscorpion Nybegynder
01. oktober 2004 - 00:17 #26
http://www.alabit.dk/hent.php

her kan du se hvad jeg mener med at den renamer filen...
Avatar billede sukos Juniormester
01. oktober 2004 - 00:17 #27
Hov, dit link virker jo! Så er der jo ingen problemer!
Avatar billede blackscorpion Nybegynder
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();
}
?>
?>
Avatar billede blackscorpion Nybegynder
01. oktober 2004 - 00:20 #29
såå min fejl, smid et svar.

pointne er retmessigt dine, og MEGA mange tak for hjælpen. ;)
Avatar billede sukos Juniormester
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 ."");
Avatar billede sukos Juniormester
01. oktober 2004 - 00:21 #31
H,, ok! :O)
Avatar billede blackscorpion Nybegynder
01. oktober 2004 - 00:22 #32
sov godt når du når så langt. *G*
Avatar billede sukos Juniormester
01. oktober 2004 - 00:22 #33
Og forresten,

Hej fangel! :O) Lang tid siden!
Avatar billede fangel Nybegynder
01. oktober 2004 - 14:29 #34
og forresten

Hej sukos ;) yep...

Morten
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