2012-06-12 48 views
0

我有一個圖像字節數組,我需要使用HTTP客戶端發送到服務器上的servlet。我們知道如何發送正常的文本數據,但無法發送圖像數據。無法使用HTTP客戶端傳輸圖像

我們用下面的代碼創建從圖像字節數組字符串數據:

String imageData = new String(imagebyteArr); 

而且發送上述String通過HTTP客戶端的servlet,但是當我們再次從字符串中使用下面的代碼檢索字節數組:

imageByteArr = imageData.toByteArray(); 

所得字節數組被修改一個,在-127其中被替換第63

如何解決這個意想不到行爲?

回答

1

我完全可以阻止你拍攝圖像字節數組並轉換爲String,因爲你將不得不擔心字符編碼。

一兩件事要做的就是直接發送使用ByteArrayEntity字節數組,如下所示:

HttpPost post = new HttpPost(url); 
post.setEntity(new ByteArrayEntity(bytes)); 
post.setHeader("Content-type", ""application/octet-stream"); 

不要忘記適當地設置您的Content-Type正確的圖像。

2

字符串得到編碼。您有兩個可能性:將二進制數據編碼爲base64(例如)發送base64並在服務器端解碼或使用PUT請求進行二進制上載。