Avatar billede spyke112 Nybegynder
29. april 2005 - 16:27 Der er 4 kommentarer og
1 løsning

Få PHP til at hente fil!

Nu har jeg lavet et upload system men nu hvis jeg uploader en PHP fil kan jeg så gøre så den downloader istedet for at gå ind og vise filen?
Avatar billede coderdk Praktikant
29. april 2005 - 16:30 #1
Du kan gøre det sådan:

<?php

  $filename = $_GET['fil'];
  $length = filesize( $filename );

  header( "Pragma: " );
  header( "Cache-Control: " );
  header( "Content-Length: $length" );
  header( "Content-Type: application/octet-stream" );
  header( "Content-disposition: attachment; filename=$filename" );
  header( "Content-Transfer-Encoding: binary" );

  readfile( $filename );

?>

Det script kaldes med ?fil=etdokument.doc f.eks.
Avatar billede spyke112 Nybegynder
29. april 2005 - 16:37 #2
Nice.. Og den begynder bare at hente filen så?
Avatar billede coderdk Praktikant
29. april 2005 - 16:50 #3
Yeps, med det korrekte filnavn og det hele :)
Det ville nok være godt at bygge noget sikkerhed ind i det, f.eks. kalde scriptet download.php og oprette en folder der hedder "filer" i samme niveau og så lave scriptet lidt om:

<?php

  $filename = 'filer/' . basename( $_GET['fil'] );
  if ( file_exists( $filename ) )
  {
      $length = filesize( $filename );

      header( "Pragma: " );
      header( "Cache-Control: " );
      header( "Content-Length: $length" );
      header( "Content-Type: application/octet-stream" );
      header( "Content-disposition: attachment; filename=$filename" );
      header( "Content-Transfer-Encoding: binary" );

      readfile( $filename );
  }
  else
  {
      echo "Filen eksisterer ikke.";
  }

?>
Avatar billede coderdk Praktikant
29. april 2005 - 16:50 #4
Ja, så skal man bare kalde den med: http://ditsite.dk/download.php?fil=billede.jpg
Avatar billede coderdk Praktikant
29. april 2005 - 16:52 #5
Oops:

<?php

  $filename =  basename( $_GET['fil'] );
  if ( file_exists( 'filer/' . $filename ) )
  {
      $length = filesize( 'filer/' . $filename );

      header( "Pragma: " );
      header( "Cache-Control: " );
      header( "Content-Length: $length" );
      header( "Content-Type: application/octet-stream" );
      header( "Content-disposition: attachment; filename=$filename" );
      header( "Content-Transfer-Encoding: binary" );

      readfile( 'filer/' . $filename );
  }
  else
  {
      echo "Filen eksisterer ikke.";
  }

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