Einen Blob mit json zurückgeben

Ich versuche, einen Ruheservice für meine Android-Anwendung zu erstellen, wo eine externe Datenbank Elemente zurückgibt, die in der lokalen Datenbank der Datenbank gespeichert werden sollen. Ich habe alles, was funktioniert, außer Blobs werden als null zurückgegeben.

Dies ist ein Beispiel für meine Jason-Antwort (Bild- und Thumbnail-Felder sind Blobs)

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

Hier ist mein PHP-Skript, um die Daten zurückzugeben.

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

Wer kennt eine Lösung für dieses Problem? Ich weiß, dass ich das nicht am effizientesten mache (besser, um Bilder im Dateisystem zu speichern), aber ich brauche das zur Arbeit.

  • JSON-Parsing-Problem nicht gelöst
  • Codierung / decodierung von daten zwischen php / java für android
  • Jeder Weg, um Android-Standard-Browser erkennen Nicht-ASCII-Dateinamen in "Content-Disposition: Anhang" Downloads?
  • Wo laufen komplexe Algorithmen? Server-Seite oder Client-Seite?
  • Laden von Lots von Bildern aus dem Server in Android
  • Was ist besser zu umleiten, Bildschirmauflösung oder User Agent?
  • Warum hochgeladenes Audio ist korrupt, wenn der Upload eindeutig erfolgreich ist?
  • Schützen Sie das Skript von Bots und unerwünschten Anfragen, die Daten veröffentlichen
  • 3 Solutions collect form web for “Einen Blob mit json zurückgeben”

    Kodiere die Binärdaten als base64, bevor du den JSON generierst.

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

    Sie können dann in Ihrer Android-Anwendung mit jedem Basis-64-Decoder decodieren. Seit API Level 8 gibt es eine eingebaute Gebrauchsklasse . Ansonsten gibt es viele externe libs, die du für das Ziel von Android 2.1 oder früher verwenden kannst.

    Du musst BLOB zu base64_encode machen

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

    Dann bereite ich eine foreach-Schleife so vor

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

    Es scheint, dass json_encode mit UTF-8 codierten Daten arbeitet. Sie können json_last_error () verwenden , um den Fehler von json_encode zu erkennen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.