Avatar billede hkb-x Nybegynder
13. august 2005 - 02:58 Der er 7 kommentarer og
1 løsning

download script

Jeg arbejder på et download script der gør 2 ting...

1) Tvinger brugeren til at downloade filen uanset filtype...

2) man skal ikke kunne se filens originale placering..

Hvordan kan jeg gøre det?
jeg har hørt man kan bruge headere... er det helt hen i vejret?
Avatar billede coderdk Praktikant
13. august 2005 - 04:43 #1
Her er et eksempel, hvor du kunne erstatte $filer array'et med et opslag i en database f.eks.:

<?php

  $filer = array( "fil1.txt", "fil2.doc" );
  if ( empty( $_GET['id'] ) )
  {
    die( 'Mangler ID!' );
  }
  header( 'content-type: application/octet-stream' );
  header( 'content-length: ' . filesize( $filer[$_GET['id']] ) );
  header( 'content-disposition: attachment; filename="' . $filer['$_GET['id']] . '"');
  readfile( $filer['$_GET['id']] );

?>
Avatar billede showsource Seniormester
13. august 2005 - 17:16 #2
Bruger selv denne til at hente f.eks. http://users.showsource.dk/install.php?dir=users/includes/submit&file=submit_nybruger.php

function download_file($path, $filnavn, $type="") {

    if(empty($type)) {
    $type= "octet-stream";
    }

        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");

        header("Content-Disposition: attachment; filename=". $filnavn ."");
        header("Content-Type: application/". $type ."");
        header("Content-Length: ".filesize($path) ."");

        $fp = @fopen($path,"r");
            if($fp) {
            print fread( $fp, filesize($path) );
            fclose($fp);
            }
      exit;

}

D.v.s.
$path = fuld sti på harddisken til dir/filnavn
F.eks. /var/www/domain/users/includes/submit/submit_nybruger.php

$filnavn = default navn når brugeren vil gemme
$type = evt. anden type...
Avatar billede hkb-x Nybegynder
14. august 2005 - 14:04 #3
@coderdk
Dejligt simpelt men den downloadernikke filen den viser den bare...

@showsource
hvordan finder jeg den fulde sti til filen?
Avatar billede showsource Seniormester
14. august 2005 - 14:08 #4
Du kan med
<?php
echo $_SERVER["PATH_TRANSLATED"];
?>

se stien til det dir som echo'er
Avatar billede hkb-x Nybegynder
14. august 2005 - 14:11 #5
@showsource
hvad står $type for?
Avatar billede hkb-x Nybegynder
14. august 2005 - 14:18 #6
@showsource
oki... det er mærkeligt... den udskriver bare en lagng text bestående af mærkelige tegn samt filnavnene i den mappe scriptet ligger:

 popup_img.phpÒmdr.jpgÜ Òmsmall_Gæstebog.phpÜÒm Gæstebog.phpÒmadl.jpg%Òmaol.jpg'Òmsmall_Presse.php¾x߸m download.php”iÜ&Òm Presse.phpÀ
Avatar billede hkb-x Nybegynder
14. august 2005 - 16:23 #7
sorø men jeres forslag har ikke virket... men jeg har selv fundet en anden løsning...
Avatar billede coderdk Praktikant
14. august 2005 - 17:55 #8
Hm der var to ' for meget i min, men denne virker da fint, jeg har lige testet:

<?php

  $filer = array( "fil1.txt", "fil2.doc" );
  if ( !isset( $_GET['id'] ) )
  {
    die( 'Mangler ID!' );
  }
  header( 'content-type: application/octet-stream' );
  header( 'content-length: ' . filesize( $filer[$_GET['id']] ) );
  header( 'content-disposition: attachment; filename="' . $filer[$_GET['id']] . '"');
  readfile( $filer[$_GET['id']] );

?>
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