Zyy~ 2020-03-15 11:57 采纳率: 0%
浏览 214

为什么mysql数据库的图片不显示? add和调用函数已写好,我感觉是if action=show 后面代码的问题 但不清楚请指出!

功能:php实现将图片存入mysql并取出预览:
数据库结构:
图片说明
代码

<?php  
// 连接数据库  
//echo realpath('..');//获得上级目录 两个点   获得当前目录 一个点
    include(realpath('..').'\controller\sqlConnect.php');

    // 判断action  
    $action = isset($_REQUEST['action'])? $_REQUEST['action'] : ''; 
    $tableName="photo";
    // 上传图片  
    if($action=='add'){  
        //防止出现‘ “” 等字符,对其进行/ 转义

        //$image = mysqli_real_escape_string($link,file_get_contents($_FILES['photo']['tmp_name']));
        $image=base64_encode(file_get_contents($_FILES['photo']['tmp_name']));
        // $_FILES['photo']['tmp_name'] 文件存储路径名 file_get_contents: 由路径获得文件内容 
        //$_FILES['photo']['type'] 获取文件类别
        $type = $_FILES['photo']['type']; 
         //ob_clean();


        //echo $image;
        //echo $type."\n"; 
        $sql = "INSERT INTO photo (userId,photoType,photoBinaryData) VALUES(1,'$type','$image')"; 
        //谨记插入式变量需加引号!!! 
        if(mysqli_query($link,$sql)or die(mysqli_error($link)))
        {
            echo "save successfully!";
            header('url=addPhoto.php');  
        }
        else
        {
            echo "insert failed";
            echo mysql_error();
            exit();  
        }

    }
    elseif($action=='show'){
        $photoId = isset($_GET['photoId'])? intval($_GET['photoId']) : 0;//intval:转化为整数
        //echo $photoId;
        //echo $photoId;
        //console.log($photoId);
        $sqlstr = "select * from photo where photoId=$photoId";
        $query = mysqli_query($link,$sqlstr) or die(mysqli_error($link));
        $thread = mysqli_fetch_assoc($query);
        if($thread){

        $photoShow=base64_decode($thread['photoBinaryData']);
        header('content-type:'.$thread['photoType']); 
        echo $photoShow;
        exit();
    }
 }else{
 // 显示图片列表及上传表单
?>
 <!DOCTYPE HTML >
 <html>
 <head>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 <title> upload image to db demo </title>
 </head>

 <body>
 <form name="form1" method="post" action="addPhoto.php" enctype="multipart/form-data">
 <p>图片:<input type="file" name="photo"></p>
 <p><input type="hidden" name="action" value="add"><input type="submit" name="b1" value="提交"></p>
 </form>

 <?php
    $sqlstr = "select * from photo order by photoId desc";
    $query = mysqli_query($link,$sqlstr) or die(mysqli_error($link));
    $result = array();
    while($thread=mysqli_fetch_assoc($query)){
        $result[] = $thread;
    }
    foreach($result as $val){

        echo '<p><img src="addPhoto.php?action=show&photoId='.$val['photoId'].'&t='.time().'" width="150" height="150"></p>';

        echo "<br/>".$val['photoType'];
    }
 ?>
 </body>
 </html>
 <?php
 }
 ?>

结果:
图片说明

问题:为什么mysql数据库的图片不显示? add和调用函数已写好,我感觉是if action=show 后面代码的问题 但不清楚请指出!

  • 写回答

1条回答 默认 最新

  • BUG的缔造者 2020-03-17 15:42
    关注

    因为这个不是图片链接

    评论

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果