I wanna upload some images from image gallery to remote server (PHP), it is using httpmime-4.1.1.jar, but i got trouble, i dont have any idea to solve it, it is my source code and my error logcat :
package com.example.uploadimage;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.InputStreamReader;
import java.util.Date;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ByteArrayBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends Activity {
private static final int SELECT_PICTURE = 0;
private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(android.R.id.icon);
}
public void pickPhoto(View view) {
//TODO: launch the photo picker
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), SELECT_PICTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK) {
Bitmap bitmap = getPath(data.getData());
imageView.setImageBitmap(bitmap);
}
}
private Bitmap getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
String filePath = cursor.getString(column_index);
cursor.close();
// Convert file path into bitmap image using below line.
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
return bitmap;
}
public void uploadPhoto(View view) {
try {
executeMultipartPost();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void executeMultipartPost() throws Exception {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
bitmap.compress(CompressFormat.JPEG, 50, bos);
byte[] data = bos.toByteArray();
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(
"http://xxx.xxx.xxx.xxx/dummy/uploadimage.php");
String fileName = String.format("File_%d.png",new Date().getTime());
ByteArrayBody bab = new ByteArrayBody(data, fileName);
// File file= new File("/mnt/sdcard/forest.png");
// FileBody bin = new FileBody(file);
MultipartEntity reqEntity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("file", bab);
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);
} catch (Exception e) {
// handle exception here
e.printStackTrace();
Log.d("error","aadfa");
}
}
}
my php source code :
<?php
$base=$_REQUEST['image'];
$binary=base64_decode($base);
header('Content-Type: bitmap; charset=utf-8');
$file = fopen('uploaded_image.jpg', 'wb');
fwrite($file, $binary);
fclose($file);
//echo 'Image upload complete!!, Please check your php file directory……';
?>
my logcat error :
07-17 10:47:09.012: W/System.err(24849): android.os.NetworkOnMainThreadException
07-17 10:47:09.019: W/System.err(24849): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)
07-17 10:47:09.019: W/System.err(24849): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
07-17 10:47:09.019: W/System.err(24849): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
07-17 10:47:09.019: W/System.err(24849): at libcore.io.IoBridge.connect(IoBridge.java:112)
07-17 10:47:09.019: W/System.err(24849): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-17 10:47:09.019: W/System.err(24849): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
07-17 10:47:09.019: W/System.err(24849): at java.net.Socket.connect(Socket.java:842)
07-17 10:47:09.019: W/System.err(24849): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
07-17 10:47:09.019: W/System.err(24849): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
07-17 10:47:09.019: W/System.err(24849): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
07-17 10:47:09.019: W/System.err(24849): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
07-17 10:47:09.019: W/System.err(24849): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
07-17 10:47:09.019: W/System.err(24849): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-17 10:47:09.019: W/System.err(24849): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-17 10:47:09.019: W/System.err(24849): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-17 10:47:09.019: W/System.err(24849): at com.example.uploadimage.MainActivity.executeMultipartPost(MainActivity.java:130)
07-17 10:47:09.019: W/System.err(24849): at com.example.uploadimage.MainActivity.uploadPhoto(MainActivity.java:81)
07-17 10:47:09.019: W/System.err(24849): at java.lang.reflect.Method.invokeNative(Native Method)
07-17 10:47:09.019: W/System.err(24849): at java.lang.reflect.Method.invoke(Method.java:511)
07-17 10:47:09.027: W/System.err(24849): at android.view.View$1.onClick(View.java:3693)
07-17 10:47:09.027: W/System.err(24849): at android.view.View.performClick(View.java:4222)
07-17 10:47:09.027: W/System.err(24849): at android.view.View$PerformClick.run(View.java:17273)
07-17 10:47:09.027: W/System.err(24849): at android.os.Handler.handleCallback(Handler.java:615)
07-17 10:47:09.027: W/System.err(24849): at android.os.Handler.dispatchMessage(Handler.java:92)
07-17 10:47:09.027: W/System.err(24849): at android.os.Looper.loop(Looper.java:137)
07-17 10:47:09.027: W/System.err(24849): at android.app.ActivityThread.main(ActivityThread.java:4895)
07-17 10:47:09.027: W/System.err(24849): at java.lang.reflect.Method.invokeNative(Native Method)
07-17 10:47:09.027: W/System.err(24849): at java.lang.reflect.Method.invoke(Method.java:511)
07-17 10:47:09.027: W/System.err(24849): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
07-17 10:47:09.027: W/System.err(24849): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
07-17 10:47:09.027: W/System.err(24849): at dalvik.system.NativeStart.main(Native Method)