Avatar billede KurtG Forsker
18. juli 2017 - 08:58 Der er 9 kommentarer og
1 løsning

PHP hvordan kan jeg lave download af tekstfil

Jeg har i php dannet en tekstfil med navnet '2017Stikord.txt'.
Den vil jeg gerne have download-et, når der trykkes på en knap på hjemmesiden.
Jeg har prøvet forskelligt, men ved download får jeg besked på, at:
Warning: file_get_contents(): Filename cannot be empty

Er der nogen der har en løsning?
Avatar billede olsensweb.dk Ekspert
18. juli 2017 - 09:16 #1
spm burde nok ligge i
https://www.computerworld.dk/eksperten/spm/programmering/php
så er der flere php folk der ser den.

har du prøvet at google
https://www.google.dk/search?q=php+download+file
Avatar billede michael_stim Ekspert
18. juli 2017 - 09:30 #2
Det er vel bare at lave et link til filen.
Avatar billede acore Ekspert
18. juli 2017 - 10:22 #3
Din fejl tyder på, at du ikke overfører det rigtige filnavn.

Men ellers - når der trykkes på knappen, skal du køre kode i stil med denne:

$file = "2017Stikord.txt";
if ($s = file_get_contents($file))
{
    header("Content-Disposition: attachment; filename=\"$f\"");
    header("Content-Type: text/html; charset=UTF-8");
    echo($s);
}
Avatar billede KurtG Forsker
18. juli 2017 - 10:32 #4
Jeg skylder lige at oplyse den kode jeg sidst har brugt:
    $file = $fname;
    header('Content-type: text/plain');
    header('Content-Length: '.filesize($file));
    header('Content-Disposition: attachment; filename='.$file);
    readfile($file);
$fname er navnet på den fil, der skal downloades.
Avatar billede michael_stim Ekspert
18. juli 2017 - 10:37 #5
<a href="/sti/til/dinfil.txt" download="brugers_filnavn_uden_filendelse">

Fungerer i HTML5
Avatar billede acore Ekspert
18. juli 2017 - 11:50 #6
#5: Ja, men ikke ved "tryk på knap".

#6: Mærkeligt, at din fejlmeddelelse taler om file_get_contents(), når du bruger readfile(). Anyway - tror ikke $file indeholder det, du tror. Foreslår, at du checker - ellers ser din kode ok ud.
Avatar billede michael_stim Ekspert
18. juli 2017 - 12:05 #7
#6
Med knap kunne det se ud af noget á la dette (ikke testet):
<button onclick="document.getElementById('link').click()">Download!</button>
<a id="link" href="/sti/til/dinfil.txt" download hidden></a>


Hvis det absolut skal väre en knap.
Avatar billede acore Ekspert
18. juli 2017 - 12:08 #8
#7: Smart! Vil det kun du' i html5?

Eneste ulempe, jeg kan se, er at man "afslører" filnavnet i koden. Det kan - i visse situationer - være uønsket.
Avatar billede michael_stim Ekspert
18. juli 2017 - 12:13 #9
#8
Ja, download attributtet er en HTML5 feature. Men det er vel på tide at HTML5 bliver brugt, har väret der siden 2014 og bliver, efter min mening, brugt alt for lidt. På tide at aflaste serverne lidt :-D
Avatar billede acore Ekspert
18. juli 2017 - 12:59 #10
Slet ikke uenig - men ofte er det jo ikke bare lige noget man ændrer - derfor ville jeg bare være sikker.
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

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