2011-06-12 24 views
10

Harici bir veritabanı uygulamaların yerel veritabanında depolanacak öğeleri döndürdüğü bir android uygulaması için bir dinlenme hizmeti oluşturmaya çalışıyorum. Bloblar boş olarak iade edilmek üzere her şey çalışıyor. Jöle ile blob döndürme

bu

benim Jason yanıtının bir örnektir. (Resim ve küçük resim alanları lekeler vardır)

{"id":"2","user_id":"1","name":"testing","type":"bouldering","picture":null,"lat":"36","long":"81","alt":"41932","accuracy":"53","thumbnail":null} 

İşte verileri döndürmek için benim php script.

<?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); 
?> 

Bu sorunla ilgili bir çözüm bilen var mı? Bunu en verimli şekilde yapmadığımı biliyorum (görüntüleri dosya sisteminde saklamak daha iyi), ama buna ihtiyacım var.

+1

okuyunuz JSON şartname gibi bir foreach döngüsü hazırlamak base64_encode için yapmak zorunda. http://www.json.org/ – excanoe

+0

Mümkün yinelenen [JSON ve PHP ile BLOB nasıl kullanılır?] (http://stackoverflow.com/questions/4855447/how-to-use-blob-with-json- ve-php) – bzlm

cevap

0

json_encode sadece UTF-8 kodlu verilerle çalışır gibi görünüyor. Json_encode hatasını algılamak için json_last_error() kullanabilirsiniz.

19

JSON'u oluşturmadan önce ikili verileri base64 olarak kodlayın.

$obj->picture = base64_encode($binaryData); 

Bunu, Android uygulamanızda herhangi bir baz 64 dekoderi ile deşifre edebilirsiniz. API seviyesi 8'den beri util class'da yerleşik. Aksi halde Android 2.1 veya önceki sürümlerini hedeflemek için kullanabileceğiniz çok sayıda harici libra vardır.

2

BLOB

while($spot = $results->fetch_assoc()){ 
    $spots[] = $spot;               
    } 

Sonra izin semboller hakkında bu

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);