Display all images from outside web root folder using PHP

Posted by micmola on Stack Overflow See other posts from Stack Overflow or by micmola
Published on 2010-05-03T23:12:48Z Indexed on 2010/05/03 23:18 UTC
Read the original article Hit count: 292

Filed under:
|
|
|
|

Hello,

I want to display all images that are stored outside my web root folder. Please help me. I am only able to display one image repeatedly. For example, if I have 5 images in my folder, only one image is displayed on my browser 5 times. Please help me on this. I've been working on this problem for over a month now. I'm a newbie. Help. Thank you. Here is the code I'm using.

images.php

    <?php   
             // Get our database connector
  require("includes/copta.php");

             // Grab the data from our people table
                $sql = "select * from people";

          $result = mysql_query($sql) or die ("Could not access DB: " . mysql_error());

 $imgLocation = " /uploadfile/";

            while ($row = mysql_fetch_array($result))
            {
                $imgName = $row["filename"]; 
   $imgPath = $imgLocation . $imgName;

 echo "<img src=\"call_images.php?imgPath=" . $imgName . "\"  alt=\"\"><br/>";
 echo $row['id'] . " " . $imgName. "<br />";

      }

 ?>

call_images.php

    <?php
 // Get our database connector
 require("includes/copta.php");

 $imgLocation = '/ uploadz/';

 $sql = "select * from people";

       $result = mysql_query($sql) or 
      die ("Could not access DB: " . mysql_error());   

 while ($row = mysql_fetch_array($result)) {

         $imgName = $row["filename"]; 
   $imgPath = $imgLocation . $imgName;


  // Make sure the file exists
  if(!file_exists($imgPath) || !is_file($imgPath)) {
      header('HTTP/1.0 404 Not Found');
   die('The file does not exist');
  }

  // Make sure the file is an image
  $imgData = getimagesize($imgPath);
  if(!$imgData) {
      header('HTTP/1.0 403 Forbidden');
      die('The file you requested is not an image.');
  }


  // Set the appropriate content-type
  // and provide the content-length.

  header("Pragma: public");
  header("Expires: 0");
  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

  header("Content-Type: image/jpg");
  header("Content-length: " . filesize($imgPath));

  // Print the image data
  readfile($imgPath);
  exit();

 }
?>

© Stack Overflow or respective owner

Related posts about php

Related posts about display