Avatar billede whyme Nybegynder
24. marts 2004 - 11:35 Der er 11 kommentarer og
1 løsning

Hent billeder som ligger uden for ens webdir

Som overskriften lyder, kunne jeg godt tænke mig at vide hvordan jeg laver et php script, som kan hente billeder som ligger uden for ens webdir.

Lad os tage et eksempel. Jeg har en tabel med:
id,billedesti

Jeg vil gerne have at jeg på en side kan skrive eks: viewimage.php?id=<nr>

og så henter php billedet og kaster det tilbage.

Den skal hente billederne fra mappen uden for webdir, altså uden for /www/ hvor man normalt har webfiler liggende (sådan at folk ikke kan gætte sig frem til direkte navne).

Er dette muligt?

I så fald - hvordan?

På forhånd mange tak.
Avatar billede skarvenneverdies Nybegynder
24. marts 2004 - 11:45 #1
Jeg aner det ikke, men hvis der ikke er andre der svarer kan du måske søge på "server mappath" - det har jeg ofte brugt i ASP - og PHP har sikkert et modstykke...
Avatar billede whyme Nybegynder
24. marts 2004 - 11:51 #2
Der kommer ingen resultater under "server mappath" i PHP kategori.
Avatar billede whyme Nybegynder
24. marts 2004 - 11:51 #3
Men det er vel en form for at tage et billede og sende billedet med headeren til brugere eller noget via PHP vil jeg gætte på - kan bare ikke kode det helt selv :-/
Avatar billede skarvenneverdies Nybegynder
24. marts 2004 - 12:04 #4
Nej jeg mente jo netop også at det burde hedde noget andet når det var i PHP :-)
Avatar billede tefcke Nybegynder
24. marts 2004 - 12:12 #5
skal det vises eller downloades?
Avatar billede whyme Nybegynder
24. marts 2004 - 12:26 #6
Det skal vises frem.

Jeg har ikke forstand på dette, så det er sikkert helt forkert - men det kan være i kan få en idé til hvad jeg mener:

<?php
// jeg laver det database baseret, når dette først virker.
    $sti = "/var/www/bla/bla/domaindk/images/";
// standard webdir er: /var/www/bla/bla/domaindk/www/
    $location = "test.jpg"; // tester lige med et billede i mappen
   
    if (!is_file($location)) { die('Image not found: ' .$location); }
   
    // Sends output
    Header("Content-type: image/jpeg");
   
    $filesize = filesize($location);
    $file = fopen($location, "r");
    $buffer = fread($file, $filesize);
    print $buffer;
    fclose($file);
?>
Avatar billede whyme Nybegynder
24. marts 2004 - 12:26 #7
Så får jeg at vide "Image not found: test.jpg"
Avatar billede whyme Nybegynder
24. marts 2004 - 12:52 #8
Er det noget som i har forstand på?

det som er lidt "tricky" er bare det, at /images/ mappen er uden for /www/ mappen... det burde være muligt som sådan...
Avatar billede whyme Nybegynder
24. marts 2004 - 12:55 #9
Jeg har fået det til at virke med:
<?php
    $sti = "/var/www/bla/bla/domaindk/images/";
    $fil = "test.jpg";
   
    $location = $sti. $fil;
    if (!is_file($location)) { die('Image not found: ' .$location); }
   
    // Sends output
    Header("Content-type: image/jpeg");
   
    $filesize = filesize($location);
    $file = fopen($location, "r");
    $buffer = fread($file, $filesize);
    print $buffer;
    fclose($file);
?>
Avatar billede whyme Nybegynder
24. marts 2004 - 13:17 #10
Lukker ;)
Avatar billede sukos Juniormester
24. marts 2004 - 17:09 #11
Den var da meget sjov, den der! :O)
Men grunden til at det virker, er jo den header.
Eneste måde at opnå noget af samme resultat på, uden header, det må vel være at bruge copy() og unlink() for ikke lade stien til billedet "stå åben" ???
Avatar billede whyme Nybegynder
24. marts 2004 - 17:39 #12
Det burde man da - dog har jeg ikke testet...
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