我在我的應用程序中有一個圖像上傳方法,需要將圖像和字符串發送到我的服務器。將圖像上傳到服務器會破壞圖像
問題是服務器接收到內容(圖像和字符串),但是當它將圖像保存在磁盤上時,它已損壞,無法打開。
這是腳本的相關部分。
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
你是什麼意思?我怎樣才能做到這一點? –