2016-03-22 25 views
0

Sunucumun php/slim komutunu çalıştıran bir put-volley-isteği kullanarak base64 kodlu bir görüntü gönderirken bazı sorunlar yaşıyorum.Base64 kodlu görüntü, android'den sunucuya yüklendiğinde kesiliyor

Verileri göndermeden önce verdiğimde iyi görünüyor, ancak sunucumdan alır almaz, veriler bozuk/kesilmiş. Görüntüyü gönderme şöyle görünür için

Benim Android Kodu: my android-işlevinde çıkışı benziyor

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

:

benim sunucuda
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); 
} 

, ben böyle bir işlevi var base64 kodlu doğru görüntü. Sunucumda, görüntünün yalnızca% 30'u var. Bana yardımcı olabilir misiniz? Bugüm nerede? Yanlış olan ne? peşin

sayesinde

RiPr

+0

Post maksimum veri boyutunu php.ini'den artırın –

+0

Resim boyutu 40kb ile Max 100kb arasındadır. Varsayılan gönderi maksimum veri boyutu yaklaşık 20 M'dir, değil mi? Bence bu benim Sorunumu çözmeyecek. – RiPr

+0

Resminizin base64'de olduğu gibi string olarak değişmesi sorun yaratabilir. Bu yüzden sunucuya görüntü yüklemek için birden çok parça deneyin. Hızlı ve etkili bir şekilde –

cevap

0

doğru içerik türünü ayarlayarak değil gibi görünüyor. Java kodunda

...

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

İnce uygulamanıza, göndermeye çalıştığınız verilerin uygulama/json biçiminde olduğunu bildirir.

Göndermekte olduğunuz veri yapısına uyacak şekilde kodlamayı değiştirmeyi deneyin.

+0

Eh - base64 kodlanmış resmimi bu json'a bir attr değeri olarak yerleştirirsem neden bir json formatı değil? JSON (bu durumda) "{ " resmi "gibi bir şey arar:" HERECOMESMYBASE64ENCODEDIMAGEANDSOON " }' – RiPr