Avatar billede BTEngineer Novice
29. maj 2006 - 12:59 Der er 10 kommentarer og
1 løsning

Download HTML fil?

Hej Eksperter.

Jeg har forsøgt mig med at lave et script som kan hente en html fil, altså downloade den, ligesom en exe fil eller en css fil.
Men det virker ikke, er der nogen der ved hvordan det skal gøres?

// Henrik
Avatar billede gizmo-gizmo Nybegynder
29. maj 2006 - 13:18 #1
Mener du at php scriptet skal læse indholdet af html filen og gemme indholdet i en fil på serveren? eller er det dine brugere der skal klikke på en html fil hvor de så får smidt en download-dialog i hovedet?
Avatar billede gizmo-gizmo Nybegynder
29. maj 2006 - 13:27 #2
Hvis det er det sidste, så kan du:

header("Content-type: text/html");
header("Content-Disposition: attachment; filename="dinfil.html"");
readfile("dinfil.html");
Avatar billede BTEngineer Novice
29. maj 2006 - 13:33 #3
Jeg mener at de skal have smidt en download-dialog lige i hovedet.
Avatar billede BTEngineer Novice
29. maj 2006 - 13:35 #4
Med det overstående script læser den jo bare filen?
Avatar billede jakobdo Ekspert
29. maj 2006 - 13:42 #5
<?php
//http://www.eksperten.dk/spm/712467

function send_file($path)
{
    session_write_close();
    ob_end_clean();
    if (!is_file($path) || connection_status()!=0)
        return(FALSE);

    //to prevent long file from getting cut off from    //max_execution_time
    set_time_limit(0);

    $name=basename($path);

    //filenames in IE containing dots will screw up the
    //filename unless we add this

    if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
        $name = preg_replace('/\./', '%2e', $name, substr_count($name, '.') - 1);

    //required, or it might try to send the serving    //document instead of the file
    header("Cache-Control: ");
    header("Pragma: ");
    header("Content-Type: application/octet-stream");
    header("Content-Length: " .(string)(filesize($path)) );
    header('Content-Disposition: attachment; filename="'.$name.'"');
    header("Content-Transfer-Encoding: binary\n");

    if($file = fopen($path, 'rb'))
    {
        while( (!feof($file)) && (connection_status()==0) )
        {
            print(fread($file, 1024*8));
            flush();
        }
        fclose($file);
    }
    return((connection_status()==0) and !connection_aborted());
}

send_file('712467.html');

?>

Se test her: http://www.codebreaker.dk/exp/712467.php
Og koden er lånt fra: http://dk2.php.net/fpassthru -> file downloads verified by session vars
22-Oct-2005 05:36
Avatar billede gizmo-gizmo Nybegynder
29. maj 2006 - 13:43 #6
Har du prøvet? Den spørger om man vil downloade.  Jeg lavede iøvrigt en lille fejl, du skal lige backslashe dinfil.html i anden linje.
Avatar billede BTEngineer Novice
29. maj 2006 - 13:49 #7
Gizmo-gizmo ->
Jeg har prøvet det, og jeg har fundet din fejl.

http://www.kwudo.dk/test.php
den skal hente filen:
http://www.kwudo.dk/load.html

Mit script i test.php ser således ud:
<?
header("Content-type: text/html");
header("Content-Disposition: attachment; filename=load.html");
readfile("load.html");
?>
Avatar billede gizmo-gizmo Nybegynder
29. maj 2006 - 13:51 #8
Brug jakobdo's funkion, den ser fuldendt ud.
Avatar billede BTEngineer Novice
29. maj 2006 - 14:11 #9
Jakobdo smid svar..
Avatar billede jakobdo Ekspert
29. maj 2006 - 14:13 #10
Og et svar.
Avatar billede jakobdo Ekspert
29. maj 2006 - 14:29 #11
Jeg takker for point.
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