Avatar billede hono Nybegynder
17. maj 2003 - 20:02 Der er 4 kommentarer og
1 løsning

Forced download

Jeg har fundet et script her: http://www.eksperten.dk/spm/339397 der gør, at man kan sørge for, at brugeren for mulighed for at download ens fil. Jeg har lavet en smule om på det. Jeg har lagt det i et dokument kaldt "download.php". Når man så linker til dette skal man kunne sende en varible med, indeholdene filnanvet på den fil der skal downloades (filen skal ligge i mappen download). Mit script ser nu således ud:

<?
if($fil){
$path = "download/";
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();
}
?>

Desværre virker det ikke. Hvis jeg foreksempel laver et link på en anden side, som hedder "download.php?fil=hej.jpg", kommer der en dialogboks hvor der står følgende:

"Du er ved at hente filen: download.php?fil=hej.jpg fra mitdomæne.dk. Vil du åbne filen eller gemme den på computeren?"

Vælger man så at man vil gemme, kommer der en alert-box frem hvor der står:

"Internet Explorer kan ikke indlæse download.php?fil=hej.jpg fra mitdomæne.dk..."

Det ser altså ud til at filen download.php prøver at "download sig selv" i stedet for filen gemt i variablen fil. Af en eller anden grund går det dog alligevel galt. Hvad skal jeg gøre for at det virker korrekt?

Hono
Avatar billede bromer Nybegynder
17. maj 2003 - 20:07 #1
Kører du med SSL. Jeg kan huske at jeg havde problemer med fildownloads på et projekt, hvor vi kørte over SSL!
Avatar billede hono Nybegynder
17. maj 2003 - 20:11 #2
Tja, lige nu kører jeg scriptet på www.starthotel.dk's server. Ved ikke hvad det er de bruger
Avatar billede bromer Nybegynder
18. maj 2003 - 01:20 #3
Okay.. hvis du ikke har betalt for SSL har du det nok ikke. (Gider ikke høre på noget varm luft om at man godt kan have SSL uden at betale for det).

Så ved jeg ikke helt hvad problemet er..
Avatar billede tkandersen Nybegynder
18. maj 2003 - 02:47 #4
Jeg har kopieret dit script - virker fint hos mig !?!? Jeg får det rigtige navn i gem boksen.
Det hjælper jo ikke dig, men ...

Prøv evt. om det hjælper for dig at sætte navnet ind i content type også:

header("Content-Type: application/octet-stream; name=\"$fil\""); // det skal være 'name' her og ikke 'filename' som i content-disposition
Avatar billede hono Nybegynder
24. maj 2003 - 19:33 #5
Så nu fik jeg det til at virke. Viste sig at være et problem med et varibelnavn som allerede var optaget.

Tak for hjælpen

Hono
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