Avatar billede nemlig Professor
27. november 2008 - 21:50 Der er 2 kommentarer og
1 løsning

Hent fil fra link, men anvend anden filnavn

Jeg har gemt nogle filer i en servermappe og navngivet dem fx.
fil_1.xxx
fil_2.xxx
osv.

Filernes oprindelige filnavne ligger i MySQL, fx. som $row['filnavn']
Nu ønsker jeg at lave et link til fx. fil nr. 1, så den kan hentes fra serveren ved at klikke på linket.
Men hvordan hulen henter jeg filen med det oprindelige navn.
Jeg vil jo normalt linke med:
echo "<a href='fil_1.xxx'>".$row['filnavn']."</a>";
Men så åbnes filen med det forkeret filnavn og program.
Avatar billede coderdk Praktikant
27. november 2008 - 22:44 #1
<a href="download.php?id=ID">Hent <?= $row['filnavn'] ?></a>

hvor ID så er filens ID, download.php er så et script der oversætter ID til faktisk fil og kender så også det oprindelige filnavn, og serverer dette. Pseudokode for download.php:

<?php

  // Hent org filnavn fra db og faktiske filnavn
  $sql = sprintf("SELECT niværende_filnavn, org_filnavn FROM filer WHERE fil_id = %d", $_GET['id'] );
  $qh = mysql_query( $sql ) or die( mysql_error() );
  if ( mysql_num_rows( $qh ) > 0 )
  {
      $row = mysql_fetch_assoc( $qh );
      header("Content-Type: application/octet-stream");
      header("Content-Disposition: attachment;filename=\"" . $row['filnavn'] ."\");
      echo file_get_contents( $row['nuværende_filnavn'] );
  }
  else
  {
      die("Fil ikke fundet.");
  }

?>
Avatar billede nemlig Professor
27. november 2008 - 23:43 #2
Det er bare perfekt. Tusind tak for denne super-hjælp. Nu fungerer det 100%.
Send venligst et svar. :)
Avatar billede coderdk Praktikant
27. november 2008 - 23:54 #3
Ok :)
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