Avatar billede mlykke Nybegynder
23. november 2000 - 12:31 Der er 17 kommentarer og
1 løsning

Sende fil til brugerens browser

Oki, en ny nød der skal knækkes.

Normalt når man skal hente en fil fra en webserver så gør man det jo ved at lave et alm. a href link til filen.
Men jeg er ved at lave noget, hvor denne metode ikke kan bruges, da der skal være mulighed for at downloade php filer, txt filer uden at de bliver vist i browseren osv.

Kort sagt, hvordan laver man det sådan at ved at klikke på på et link fx. til et eller andet PHP script, så bliver filen man har valgt at hente sendt til browseren. Dv.s hvis det fx. er en PHP fil så bliver sourcecoden smidt afsted så du får en download box frem, istedet for at fortolke koden?

Jeg har en idé om at der skal fifles med nogle headers osv?
Avatar billede olebole Juniormester
23. november 2000 - 12:45 #1
<ole>
Se dette spørgsmål. Virker dog kun i IE - desuden er det ikke PHP, men virker i det mindste:
    http://www.eksperten.dk/spm/16893
/mvh
</bole>
Avatar billede sark Nybegynder
23. november 2000 - 12:46 #2
Hej..

1. Du kan vælge at pakke filen til en .zip ås er  der ingen problemer det.

2 du kan omdøbe den pågælende .php til .phps så bliver kilden til php filen vist

Avatar billede sark Nybegynder
23. november 2000 - 12:48 #3
Havde ikke set de svar ole: )
Avatar billede jinxed Nybegynder
23. november 2000 - 12:59 #4
Det gøres sådan her:
<?
header(\"Content-Disposition: attachment; filename=$filnavn\");
header(\"Content-Type: application/octet-stream\");
header(\"Content-Length: \".filesize(\"$sti\")); 
header(\"Pragma: no-cache\");
header(\"Expires: 0\");
$fp=fopen(\"$sti\\$filnavn\",\"r\");
print fread($fp, filesize(\"$sti\\$filnavn\"));
fclose($fp);
exit();
?>

Jinxed ; ]
Avatar billede mlykke Nybegynder
23. november 2000 - 13:39 #5
jinxed...jeg prøver lige din metode...den ligner min bortset fra jeg ikke havde exit med og brugte ehco istedet....
Avatar billede jinxed Nybegynder
23. november 2000 - 13:50 #6
Jeg har selv brugt mit svar. Så det skulle virke
Avatar billede mlykke Nybegynder
23. november 2000 - 14:16 #7
Når jeg benytter dit script og sætter dne til at prøve med en fil der hedder test.txt så sker der ikke en meter :) Den laoder bare scriptet og så viser den en blank side....
Avatar billede jinxed Nybegynder
23. november 2000 - 14:43 #8
Post lige din kode!

Jinxed
Avatar billede mlykke Nybegynder
23. november 2000 - 15:21 #9
<?
$sti = \"h:\\sbox\";
$filnavn = \"test.txt\";
header(\"Content-Disposition: attachment; filename=$filnavn\");
header(\"Content-Type: application/octet-stream\");
header(\"Content-Length: \".filesize(\"$sti\")); 
header(\"Pragma: no-cache\");
header(\"Expires: 0\");

$fp=fopen(\"$sti\\\\$filnavn\",\"r\");
print fread($fp, filesize(\"$sti\\\\$filnavn\"));
fclose($fp);
exit();
?>
Avatar billede jinxed Nybegynder
23. november 2000 - 15:24 #10
Prøv med:

<?
$sti = \"h:\\\\sbox\";
$filnavn = \"test.txt\";
header(\"Content-Disposition: attachment; filename=$filnavn\");
header(\"Content-Type: application/octet-stream\");
header(\"Content-Length: \".filesize(\"$sti\\\\$filnavn\")); 
header(\"Pragma: no-cache\");
header(\"Expires: 0\");

$fp=fopen(\"$sti\\\\$filnavn\",\"r\");
print fread($fp, filesize(\"$sti\\\\$filnavn\"));
fclose($fp);
exit();
?>
Avatar billede mlykke Nybegynder
23. november 2000 - 15:27 #11
Så skiver den bare indholdet af test.txt filen på skærmen, istedet for at jeg kan downloade den.
Avatar billede hage Nybegynder
23. november 2000 - 15:32 #12
Jeg ligger inde med et script magen til jinxed\'s, problemet opstår, så vidt jeg har erfaret med filer hvis MimeType er text/plain. Disse filer vil blive vist i browseren ligesom en alm. .txt fil. Til gengæld vil både GIF, JPG, TIF, DOC osv. filer blive \"tvunget\" til at downloades.

I øvrigt bruger jeg ikke fopen()... men @readfile()
Avatar billede mlykke Nybegynder
23. november 2000 - 15:35 #13
Hvis jeg prøver med fx. php filer så bliver soucen bare vist istedte for at downloade og så er jeg lige vidt. Det er nemlig blandt andet PHP filer der skal kunne downloades uden at de skal zippes først.
Avatar billede jinxed Nybegynder
23. november 2000 - 15:43 #14
Er header kaldne intakte?

Hvilken OS/webserver kører serveren?

Prøv at se på:
www.jinxed.dk/test.php

Her er sourcen:
<?
$sti = \"\";
$filnavn = \"text.txt\";
header(\"Content-Disposition: attachment; filename=$filnavn\");
header(\"Content-Type: application/octet-stream\");
header(\"Content-Length: \".filesize(\"$sti$filnavn\")); 
header(\"Pragma: no-cache\");
header(\"Expires: 0\");

$fp=fopen(\"$sti$filnavn\",\"r\");
print fread($fp, filesize(\"$sti$filnavn\"));
fclose($fp);
exit();
?>

Jeg har prøvet samme fil på NT4,W2k og Solaris

Jinxed
Avatar billede mlykke Nybegynder
23. november 2000 - 15:47 #15
Det er en IIS 5.... Jeg har lige prøvet den url du sendte... Jeg ser bare noget tekst i browseren... jeg bliver ikke bedt om at download filen... og det er jo det jeg gerne vil :)
Avatar billede jinxed Nybegynder
23. november 2000 - 15:49 #16
Hvilken browser bruger du?

Jeg har prøvet med NS6 & IE5.5
Avatar billede mlykke Nybegynder
23. november 2000 - 15:56 #17
Jeg har prøvet med IE5.5 på en W2K Pro og der virker det ikke, men med en NS6 og en Mozilla virker det fint.
Jeg har lige prøvet det fra en andne IE5.5, W2K maskine og der virker det også fint... det var da underligt hvorfor det så ikke gør ved min maskine?

Well anyway...pointene er dine...
Så kan jeg ebdre forstå at det ikek virkede dte jeg ahvde lavet først...det er simpelthen min Ie eller noget som er fucked up...

Hvis du har nogen anele om hvorfor min IE ikke vil må du godt lade mig høre...men pointene er dine....
Avatar billede mlykke Nybegynder
23. november 2000 - 15:58 #18
MEGA ordfuck

Så kan jeg bedre forstå at det ikke virkede det jeg havde lavet først... det er simpelthen min IE eller noget som er fucked up
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