put-volley-requestを使用してphp/slimを実行しているサーバーにbase64でエンコードされた画像を送信する際に問題が発生します。Base64でエンコードされた画像がアンドロイドからサーバーにアップロードされるときに途切れる
送信する前にデータを出力すると表示がうまくいくように見えますが、サーバー上でデータを取得するとすぐにデータが破損します。画像を送信するための
私のAndroidのコードは次のようになります。私のアンドロイド-機能での出力がどのように見える
$app->put('/image', function() use ($app){
$image = $app->request->put('image');
$response['error'] = false;
$response['image'] = $image;
echoResponse(200, $response);
});
:私のサーバー上で
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);
}
のように、私は機能を持っています正しいbase64でエンコードされた画像。 私のサーバーには全体の約30%しかありません。手伝って頂けますか?私のバグはどこですか?なにが問題ですか?事前に
おかげで、
RiPr
投稿の最大データサイズをphp.iniから変更します –
イメージサイズは40kbから最大100kbです。デフォルトのポスト・マックス・データ・サイズは約20Mです。私はこれが私の問題を解決しないと思う。 – RiPr
あなたのイメージは文字列に変更されています。つまり、base64の場合、問題が発生する可能性があります。画像をサーバーにアップロードするには複数の部分を試してください。迅速かつ効果的な方法 –