Cha*_*nas 11 php mysql android json blob
我正在尝试为我的Android应用程序创建一个休息服务,其中外部数据库返回要存储在应用程序本地数据库中的项目.除了blob返回为null之外,我已经完成了所有工作.
这是我的杰森回应的一个例子.(图片和缩略图字段是blob)
{"id":"2","user_id":"1","name":"testing","type":"bouldering","picture":null,"lat":"36","long":"81","alt":"41932","accuracy":"53","thumbnail":null}
Run Code Online (Sandbox Code Playgroud)
这是我的PHP脚本返回数据.
<?php
require_once('config.php');
$mysqli = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
$sql = 'select * from spot_main';
$results =$mysqli->query($sql);
$spots = array(); //array to parse jason from
while($spot = $results->fetch_assoc()){
$spots[] = $spot;
}
echo json_encode($spots);
?>
Run Code Online (Sandbox Code Playgroud)
有人知道这个问题的解决方案吗?我知道我不是最有效的方式(更好地将图像存储在文件系统中),但我需要这个才能工作.
Dav*_*unt 26
在生成JSON之前,将二进制数据编码为base64.
$obj->picture = base64_encode($binaryData);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用任何base 64解码器在Android应用程序中对此进行解码.从API级别8开始,有一个内置的util类.否则,您可以使用大量外部库来定位Android 2.1或更早版本.
你必须将BLOB设为base64_encode
while($spot = $results->fetch_assoc()){
$spots[] = $spot;
}
Run Code Online (Sandbox Code Playgroud)
然后准备这样的foreach循环
foreach($spots as $key=>$value){
$newArrData[$key] = $spots[$key];
$newArrData[$key]['picture'] = base64_encode($spots[$key]['picture']);
$newArrData[$key]['thumbnail'] = base64_encode($spots[$key]['thumbnail']);
}
header('Content-type: application/json');
echo json_encode($newArrData);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29275 次 |
最近记录: |