如何在 Retrofit POST 方法的正文中将 Base64 编码的图像发送到服务器

Ada*_*n P 2 post base64 bitmap android-studio retrofit2

我的 onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAMERA_INTENT_REQUEST_CODE && resultCode == RESULT_OK && data != null && data.getExtras() != null) {



        if (data.getData() == null) {
            bitmap = (Bitmap) data.getExtras().get("data");
            resultImage.setImageBitmap(bitmap);
        } else {
            try {
                bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
                resultImage.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }



    } else {
        Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show();
    }
}
Run Code Online (Sandbox Code Playgroud)

将“位图”转换为“Base64”

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
    byte[] byteArray = byteArrayOutputStream.toByteArray();

    String convertImage = Base64.encodeToString(byteArray, Base64.DEFAULT);

    Log.e("CONVERT IMAGE : ", "" + convertImage);
Run Code Online (Sandbox Code Playgroud)

API调用

内容类型:应用程序/json

JSONObject paramObject = new JSONObject();
 paramObject.put("file", convertImage); //Base64 image
 paramObject.put("userName", name);

Call<Response> addImage = apiInterface.AddImage( user,  paramObject.toString());
Run Code Online (Sandbox Code Playgroud)

POST方法

@POST("{user}/image")
Call<Response> AddImage( @Path("user") String user, @Body String body);
Run Code Online (Sandbox Code Playgroud)

转换后的图像 - 日志结果

E/CONVERT IMAGE :: iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAIAAAD6wG44AAAAA3NCSV...
Run Code Online (Sandbox Code Playgroud)

但是我需要如下传递我的 Base64 字符串,我的字符串缺少数据部分

数据:图像/png;base64,iVBORw0KGgoAAAANSUhEUgAAATIAAAExCAY......

问题是什么?

Nav*_*hna 5

只需data:image/png;base64,在开头追加

 JSONObject paramObject = new JSONObject();
 paramObject.put("file", "data:image/png;base64,"+convertImage); 
 paramObject.put("userName", name);    
 Call<Response> addImage = apiInterface.AddImage( user,  paramObject.toString());
Run Code Online (Sandbox Code Playgroud)