php
  • mysql
  • sql
  • file-upload
  • blob
  • 2012-11-20 39 views 1 likes 
    1

    我有以下代码从我的数据库表字段中获取图像。php mysql图像无法正常显示

    public function getStudentses() { 
        $students_data = array();  
    
        $query = $this->db->query(
         "SELECT * FROM " . DB_PREFIX . "students 
         WHERE customer_id = '" . (int)$this->customer->getId() . "'"); 
    
        foreach ($query->rows as $result) {    
         $students_data[$result['students_id']] = array(
          'students_id'  => $result['students_id'], 
          'firstname'   => $result['firstname'], 
          'filename'   => $result['filename'], 
          'image'    => $result['image'], 
         ); 
        }  
        return $students_data; 
    } 
    

    这是显示图像我的HTML代码:

    <img src="<?php echo $result['image']; ?>" /> 
    

    但是当我使我的页面图像不能正确显示其喜欢像

    s4�.���N����萗�p�[email protected]��]�����F�G�>�v��W 
    

    一些符号为什么它像这个?我该如何解决我的错误?

    +0

    您可能需要增加相应信息的矿头 –

    +1

    您是否存储图像的原始二进制文件? – sberry

    +0

    yaa,我正在使用blob函数 – mans

    回答

    4

    现代浏览器都使用原始图像数据源这种支持。

    你可以尝试使用类似:

    <img src="data:image/png;<?php echo $result['image']; ?>" /> 
    

    你应该使用编码像base64的图像,然后输出的东西:

    <img src="data:image/png;base64,<?php echo base64_encode($result['image']); ?>" /> 
    

    我使用image/png例如。如果你的图像是别的东西,你应该使用相应的encType。

    只要确保阅读thisthis。在HTML

    'image'    => base64_encode($result['image']), 
    

    然后:

    +0

    不应该'$ result ['image']'被html转义? – Vyktor

    +0

    '8-0' to'data:image/png;' –

    +0

    感谢您的快速回答,我现在试过了,它的工作...再次感谢... – mans

    2

    你很可能需要将头更改为图像

    http://php.net/manual/en/function.header.php

    header('Content-Type: image/jpeg'); 
    
    +1

    我想,值得一提的是,在这种情况下,输出也不应包含任何HTML代码。 – Oleg

    1

    假设你存储图像的原始二进制,你可以做到这一点

    <img src="data:image/png;base64,<?php echo $result['image']; ?>" /> 
    

    这是假设图像是PNG。如果不是,请相应地更改MIME类型。

    2

    这种最常见的做法(我所看到的)是建立HTML:

    <img src="image.png.php?student_id=<?php echo $result['students_id']; ?>" /> 
    

    然后image.png.php

    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "students " 
          "WHERE students_id = '" .(int)$request->getRequestParam('sudent_id') . "'"); 
    
    // And now display raw content as image 
    $student = reset($query->rows); 
    if(!$student){ 
        header('HTTP/1.0 404 Not Found'); 
        die('Blah blah... Blah blah blah'); 
    } 
    
    header('Content-Type: image/jpeg'); 
    echo $student['image']; 
    

    这样你就可以创建链接到图像可以从任何你想要的地方使用(不需要在远程站点上访问任何数据库)。

    0

    如果图像是通过这个代码

    s4�.���N����萗�p�[email protected]��]�����F�G�>�v��W 
    

    存储的,因为你只是复制和粘贴数据库的代码。 请确定它存储了图像的名称/ ID和图像的路径,并通过其路径和ID /名称获取图像,或按照Prasanth对您的说明进行操作。 这是我的帮助 How to retrieve images from MySQL database and display in an html tag

    +0

    它的好主意.... – mans

    相关问题