【问题标题】:Load file from mysql with PHP使用 PHP 从 mysql 加载文件
【发布时间】:2011-07-20 14:58:37
【问题描述】:

我将图像作为 blob 存储在我的 mysql 数据库中。我可以通过变量中的查询加载这些文件,但是如何将这个变量的内容作为图像发送回浏览器?

html 文件可以包含类似 <img src="smtg.png"> 的内容吗?或者如何提出请求?

【问题讨论】:

    标签: php mysql file


    【解决方案1】:

    您需要一个回显图像数据的脚本。使用header() 设置适当的内容类型,然后回显数据。例如:

    header("Content-type: image/png");
    ...
    echo $db_results['imgdata'];
    

    然后,从 HTML 页面调用您的脚本,如下所示:

    <img src="yourimagescript.php" />
    

    理想情况下,您应该将文件类型存储在图像数据旁边的列中,以便您可以动态设置正确的内容类型。

    【讨论】:

      【解决方案2】:

      PHP

      <?php
      mysql_connect("localhost","test","test");
      mysql_select_db("test");
      $imageid = (int)$_GET['imgid'];
      $rs = mysql_query("select * from images where imageid=$imageid");
      $row = mysql_fetch_assoc($rs);
      $imagebytes = $row['imgdata'];
      header("Content-type: image/jpeg");
      print $imagebytes;
      ?>
      

      HTML

      <img src="location_to_your_php_script.php?imgid=21" alt="xxx" />
      

      【讨论】:

      • 当然你需要根据你的图片改变mime类型。
      • 即使您将 $_GET 参数强制转换为 int,也值得对数据进行转义,以便不知道的人去复制并粘贴它并打开自己的 SQL 注入。
      • 谢谢!我还通过 Brad 的帖子编写了我的代码,但是您的解决方案很好。非常感谢您的努力!
      • @Senad,你的 int 呢?这是做什么的?不只是简单的演员表吗?是不是在后台发生了什么?比如逃跑之类的?
      • 当转换为 int 时,来自 url 的 sql 注入不会应用于变量,例如$int = (int)"' 截断表用户";将为 0,因此 sql 注入没有问题。
      猜你喜欢
      • 2014-03-28
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多