【问题标题】:Image pathname from mysql php doesn't display the image来自mysql php的图像路径名不显示图像
【发布时间】:2011-09-05 16:56:03
【问题描述】:

因此,在我将图像文件的路径名存储在 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'值,但图像不会显示。

请帮忙。

【问题讨论】:

  • 你能发一个链接到页面吗?

标签: php image pathname


【解决方案1】:

这是您代码的一部分:

$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。

此外,我看到很多重复的代码,而且您在滥用会话变量,但这是题外话。

【讨论】:

  • 上传时不保存本地部分,只保存图片的文件名。
  • 您只需要存储"/hcUsers/" . $_SESSION['pin'] . "/profilePictures/" . $name。从那里它是相对于您的文档根目录。
  • 滥用会话变量?它是不引人注目的编程的一部分还是对我的网站有害?
  • 你用$_SESSION["ppPath"]做什么?为什么你在每个视图上都登录用户? :)
  • 我按照您告诉我的进行了更改。但是现在,图像本身并没有保存在 hcUsers 中。这就是我所做的`$dir="/hcUsers/".$_SESSION['pin']."/profilePictures";$realPath=$dir."/".$name;
猜你喜欢
  • 1970-01-01
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
相关资源
最近更新 更多