我在我的应用程序中有一个图像上传方法,需要将图像和字符串发送到我的服务器。将图像上传到服务器会破坏图像
问题是服务器接收到内容(图像和字符串),但是当它将图像保存在磁盘上时,它已损坏,无法打开。
这是脚本的相关部分。
HttpPost httpPost = new HttpPost(url);
Bitmap bmp = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
String byteStr = new String(byteArray);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("--"+boundary+"\r\n");
stringBuilder.append("Content-Disposition: form-data; name=\"content\"\r\n\r\n");
stringBuilder.append(message+"\r\n");
stringBuilder.append("--"+boundary+"\r\n");
stringBuilder.append("Content-Disposition: form-data; name=\"image\"; filename=\"image.jpg\"\r\n");
stringBuilder.append("Content-Type: image/jpeg\r\n\r\n");
stringBuilder.append(byteStr);
stringBuilder.append("\r\n");
stringBuilder.append("--"+boundary+"--\r\n");
StringEntity entity = new StringEntity(stringBuilder.toString());
httpPost.setEntity(entity);
我无法更改服务器,因为其他客户端使用它,它适用于他们。我只需要了解为什么图像被损坏。
我只是猜测,但你有没有检查enconding?你从图像数据创建String时不指定字符集:'new String(byteArray,??)' – Peter
你是什么意思?我怎样才能做到这一点? –