サーバーに画像をアップロードするためのこのコードがあります。最初にギャラリーから画像を選択し、アップロードするときに img パスを非同期タスクに渡しますが、エラーなしでアップロードした後、サーバーに黒い画像が表示されます。エンコーディングと関係があると思います...
以下のコードは、画像をアップロードする非同期の一部です。
Bitmap bitmapOrg = BitmapFactory.decodeFile(IMG_PATH);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
bitmapOrg.compress(Bitmap.CompressFormat.PNG, 100, bao);
byte[] data = bao.toByteArray();
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(SERVER_PATH);
//filename
String fileName = String.format("File_%d.png",new Date().getTime());
ByteArrayBody bab = new ByteArrayBody(data, fileName);
MultipartEntity reqEntity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
//POST params
reqEntity.addPart("image", bab);
reqEntity.addPart("user_id", new StringBody("123"));
reqEntity.addPart("apptoken", new StringBody("abcd123"));
Log.e("Response params", reqEntity.toString());
postRequest.setEntity(reqEntity);
int timeoutConnection = 60000;
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,
timeoutConnection);
int timeoutSocket = 60000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
HttpConnectionParams.setTcpNoDelay(httpParameters, true);
HttpResponse response = httpClient.execute(postRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
s = s.append(sResponse);
}
System.out.println("Response: " + s);