我是新来的,所以请耐心等待。
问题:如何通过php将存储为blob的图像作为json字符串传递?
情况:我有一个简单的慈善数据库,其中包含字段charity_id(int),charity_name(字符串),图片(blob)以及其他几个字段。
我想用php抓取id,charity_name和图片,并将数据作为json字符串传递给我的Android应用程序,在那里它将使用volley库进行解析。
除了我的图片字段传递的是null而不是字符串外,我已经正常工作并正确传递。
<?php
if($_SERVER['REQUEST_METHOD']=='GET'){
$id = $_GET['id'];
require_once('dbConnect.php');
$sql = "SELECT charity_id, charity_name,picture FROM charity_table WHERE charity_id = '".$id."'";
$r = mysqli_query($con,$sql);
$res = mysqli_fetch_array($r);
$result = array();
array_push($result,array(
"charity_id"=>$res['charity_id'],
"charity_name"=>$res['charity_name'],
"picture"=>$res['picture']
)
);
echo json_encode(array("result"=>$result));
mysqli_close($con);
}
传递了json值
{"result":[{"charity_id":"1","charity_name":"charity1","picture":null}]}
因为我对进程的理解(并且可能是错误的)是php从sql获取二进制字符串,然后将此字符串放入json数组,然后android读取数组并将二进制字符串转换为位图图像。
答案 0 :(得分:0)
不是将图像存储为blob,而是可以存储数据库中图像的引用路径,然后
从数据库中返回一行
使用图像引用网址,您可以根据需要将图像下载为具有异步调用的二进制块。
答案 1 :(得分:0)
JSON无法处理原始二进制数据,您需要以某种方式对其进行编码,以及&#39;如何&#39;几乎是规范的基础64。
在服务器端使用它:
array_push($result,array(
"charity_id"=>$res['charity_id'],
"charity_name"=>$res['charity_name'],
"picture"=>base64_encode($res['picture'])
)
);
并在Android端实现相关的base64解码。
那就是说,我同意这个问题的其他意见:
如果你只是以这种方式存储和提供小图标或缩略图,那么太太差了,但是任何超过几KB的东西都会很痛苦战利品。