Путь к изображению из MySQL PHP не отображает изображение - PullRequest
0 голосов
/ 05 сентября 2011

Поэтому после того, как я сохраню путь к файлу изображения в mysql php, у меня возникают трудности с получением этого изображения для отображения. Другими словами, когда я делаю «проверять элемент», устанавливается значение «src». Тем не менее, изображение не отображается, и все, что осталось, это квадратное поле на странице. Я попытался использовать изображение профиля по умолчанию, которое уже установлено для пользователя, просто чтобы проверить, не является ли проблема с назначением значения php. Но это не так. Я также проверил содержимое файла физически, и все файлы загружены нормально. Единственная проблема - заставить его отображать.

Вот как я это делаю.

Php для проверки загрузки файла

error_reporting(E_ALL);

if($_SERVER["REQUEST_METHOD"]=="POST"&&isset($_POST["savePersonalInfo"]))
{
 if(isset($_FILES["ppFile"]))
 {
  $name=$_FILES["ppFile"]["name"];
  $tempName=$_FILES["ppFile"]["tmp_name"];
  $size=$_FILES["ppFile"]["size"];
  $type=$_FILES["ppFile"]["type"];

   if(($type=="image/jpg"||$type=="image/jpeg"||$type=="image/pjpeg")&&( ($size>0&&$size<=4000000000))
    {

     $dir="C:/xampp/htdocs/hcUsers/".$_SESSION['pin']."/profilePictures";

     $realPath=$dir."/".$name;

     if(is_dir($dir))
     {
       move_uploaded_file($tempName,$realPath);

       $_SESSION["ppPath"]=$realPath;

       $fileQuery="UPDATE `current users` SET `ppPath`='$realPath' WHERE `id`='".$_SESSION['pin']."' " ;

       checkConnect(mysql_query($fileQuery),"query of $fileQuery");

     }
     else
     {
       mkdir($dir,0777,true);

       move_uploaded_file($tempName, $realPath);

       $_SESSION["ppPath"]=$realPath;

       $fileQuery="UPDATE `current users` SET `ppPath`='$realPath' WHERE `id`='".$_SESSION['pin']."' " ;

       checkConnect(mysql_query($fileQuery),"query of $fileQuery"); 
     }
  }

    else
 {
   print "Error".$_FILES["ppFile"]["error"];
 }

}

?>

Php для получения пути к изображению и отображения изображения

  <?php
    session_start();
    connectDatabase();
    $query="SELECT * FROM `current users` WHERE `email`='".$_SESSION['email']."' AND `      `password`='".$_SESSION['password']."' ";
    $result=mysql_query($query);
    checkConnect($result,"query of $query");
    $row=mysql_fetch_assoc($result);
    $_SESSION["pin"]=$row["id"];

    $imgPath="http://www.metalmusicarchives.com/images/covers/avariel-no-end-in-sight(demo)-20110719103608.jpg";

  if($row["ppPath"]!="")
  {
   $imgPath=$row["ppPath"];
   $_SESSION["ppPath"]=$imgPath;
  }  
?>

 <p><img src="<?php echo $imgPath ?>" alt="" type="image/jpeg" class="profilePic" >

В конце устанавливается значение 'src', но изображение не отображается.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 05 сентября 2011

Это часть вашего кода:

$dir="C:/xampp/htdocs/hcUsers/".$_SESSION['pin']."/profilePictures";

$realPath=$dir."/".$name;

if(is_dir($dir))
{
    move_uploaded_file($tempName,$realPath);

    $_SESSION["ppPath"]=$realPath;

    $fileQuery="UPDATE `current users` SET `ppPath`='$realPath' WHERE `id`='".$_SESSION['pin']."' " ;

Таким образом, при получении ppPath из базы данных и попытке отобразить его в браузере src изображения будет указывать на C:/xampp/etc.Это не сработает, поскольку ваши посетители не имеют доступа к этому каталогу.Как и вы, с точки зрения браузера.Измените его на относительный URL.

Кроме того, я вижу много дублирующегося кода, и вы злоупотребляете переменными сеанса, но это оффтоп.

...