我将图像(一次一个)从Android应用程序(使用retrofit2和okhttp3)上传到springboot服务器。我使用base64将图像文件转换为字符串。我在手机上拍摄了一张图片,但是对于任何其他图片都不起作用。
Android代码:
try {
Bitmap bm = BitmapFactory.decodeFile(imageLocation);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String base64Image = Base64.encodeToString(b, Base64.DEFAULT);
baos.flush();
baos.close();
Log.d(TAG, base64Image);
beconnect.uploadPhoto(base64Image, "imagename");
} catch (FileNotFoundException e) {
System.out.println("Image not found" + e);
} catch (IOException ioe) {
System.out.println("Exception while reading the Image " + ioe);
}
@POST("/uploadImage")
@FormUrlEncoded
<Observable<retrofit2.Response<String>> uploadPhoto(@Field("image") String image, @Field("name") String name);//@Part("desc") RequestBody desc, @Part MultipartBody.Part image);
这是有效图像的原始帖子... POST http://192.168.1.11:8080/uploadImage http / 1.1(393608字节正文)
这是失败的帖子...... POST http://192.168.1.11:8080/uploadImage http / 1.1(11115982-byte body)
错误:
HTTP FAILED:java.net.SocketException:断开管道 okhttp3.internal.http1.Http1Codec $ FixedLengthSink.write(Http1Codec.java:286)at at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:63) ....
我知道两个图像之间的字节大小不同......这是问题的原因,我该如何解决?