2016-03-22 3 views
0

Ich habe Probleme beim Senden eines base64-kodierten Bildes mit einer Put-Volley-Anfrage an meinen Server unter php/slim.Base64-kodiertes Bild wird beim Hochladen von Android auf Server abgeschnitten

Wenn ich die Daten vor dem Senden ausgibt sieht es gut aus, aber sobald ich es auf meinem Server bekomme, sind die Daten beschädigt/geschnitten.

Mein Android-Code für das Bild zu senden wie folgt aussieht:

private void updateImage(Bitmap myImage) { 
    String tag_string_req = "req_updateimage"; 

    String updateUrl = String.format(API_DOMAIN + AppConfig.URL_UPDATE_IMAGE); 
    StringRequest strReq = new StringRequest(Request.Method.PUT, updateUrl, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 

      try { 
       //do some stuff 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e(TAG, "Error: " + error.getMessage()); 
     } 

    }){ 

     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("Content-Type", "application/json; charset=UTF-8"); 

      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
      myImage.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); 
      byte[] byteArray = byteArrayOutputStream.toByteArray(); 
      String base64Image = Base64.encodeToString(byteArray, Base64.DEFAULT); 
      params.put("image", base64Image); 

      System.out.println(params); 
      return params; 
     } 
    }; 

    AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 
} 

Auf meinem Server habe ich eine Funktion wie:

$app->put('/image', function() use ($app){ 
    $image = $app->request->put('image'); 
    $response['error'] = false; 
    $response['image'] = $image; 
    echoResponse(200, $response); 
}); 

Die Ausgabe in meiner android-Funktion aussieht wie ein Korrektes Base64-kodiertes Bild. Auf meinem Server gibt es nur etwa 30% des gesamten Bildes. Kannst du mir helfen? Wo ist mein Käfer? Was ist falsch?

Vielen Dank im Voraus,

RIPR

+0

Vergrößern Sie die maximale Datengröße von php.ini –

+0

Die Bildgröße liegt zwischen 40kb und Max 100kb. Standard Post Max Datengröße ist etwa 20M, oder? Ich denke, das wird mein Problem nicht lösen. – RiPr

+0

Ihr Bild ändert sich in String Ich meine in Base64 so kann es zu Problemen führen. Versuchen Sie also mehrere Teile zum Hochladen von Bildern auf den Server. schnelle und effektive Art und Weise –

Antwort

0

Es sieht aus wie der Typ korrekten Inhalt nicht einstellen werden.

in Java-Code ...

params.put ("Content-Type", "application/json; charset = UTF-8");

Das sagt Ihrer schlanken App, dass die Daten, die Sie senden möchten, im application/json Format sind ... was nicht ist.

Versuchen Sie, die Codierung so zu ändern, dass sie der Datenstruktur entspricht, die Sie senden.

+0

Nun, warum ist es kein JSON-Format, wenn ich mein Base64-kodiertes Bild in diesen JSON als Wert für einen Attr einfüge? Der JSON sieht (in diesem Fall) so etwas wie '{ " image ":" HERECOMESMYBASE64ENCODEDIMAGEANDSOON " }' – RiPr

Verwandte Themen