【问题标题】:encode/replace blob with base64 in php array在php数组中用base64编码/替换blob
【发布时间】:2013-05-04 16:57:30
【问题描述】:

我目前正在构建一个 HTML5 应用程序,该应用程序从 php 网络服务获取其数据 json 编码。 我也有存储在数据库中的小图像,并希望将它们返回为使用 json 结果编码的 base64。

目前我得到了所有 mysql 字段,然后像这样以 json 格式返回:

$query = "SELECT * FROM `news` ";

$posts = array();
if(mysql_num_rows($result)) {
  while($post = mysql_fetch_assoc($result)) {
    $posts[] = array('post'=>$post);
  }
}

 header('Content-Type: text/javascript');
echo json_encode(array('posts'=>$posts));

我有一个名为图片的字段。 现在我想用base64转换数组posts[]中的图片数据,我可以简单地用json返回所有数据,而不需要只为图片发送另一个http请求。

我的 php 技能不是很好,但我想到了类似的东西:

$posts['picture'] = base64_encode($posts['picture']);

但我需要将每张图片都转换为base64,所以最好把它放在while循环中:

while($post = mysql_fetch_assoc($result)) {
    if($post == 'picture'){
      $post = base64_encode($post);
    }
    $posts[] = array('post'=>$post);
  }  

这行得通吗?还是有其他/更好的方法? 谢谢!

【问题讨论】:

    标签: php json html web-services blob


    【解决方案1】:

    通常在数据库中存储图片(或任何二进制数据)不是一个好主意。经典的方式是存储图片的位置。 如果您出于任何原因更喜欢将图片存储在数据库中,您可以执行您正在执行的操作。

    顺便说一句,你可以在将图片插入数据库时​​直接将图片以base64编码,这样可以避免每次访问时都重新转换。

    【讨论】:

      【解决方案2】:

      并非如此,首先,mysql_fetch_assoc 将返回整行(所有列),这意味着$post 将包含每个列名,例如:

      $post['column_name_a']
      
      $post['column_name_b']
      
      $post['column_name_c']
      
      ....
      

      所以,你应该这样做(它是否为空并不重要):

      $post['picture'] = base64_encode($post['picture']);
      

      然后,您可以将其添加到 $posts[] 数组中,然后 json_encode() 将其打印出来。

      附带说明,mysql_fetch_assoc 在 PHP 5.5 中已被弃用,并将在未来被删除 -- 请参阅 http://php.net/manual/en/function.mysql-fetch-assoc.php

      【讨论】:

        【解决方案3】:

        谢谢! 你是对的......我应该考虑在未来改变我的代码。

        目前,这对我来说只适用于几张小图片:

        while($post = mysql_fetch_assoc($result)) {
            $post['picture'] = base64_encode($post['picture']);
            $posts[] = array('post'=>$post);
          }
        

        【讨论】:

          猜你喜欢
          • 2012-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多