android - How to upload image to server? -
i have searched many sites know how upload image server.i have seen 1 sample example.but not reading imaging internal memory of phone. have included mainactivity.java
file.any suggestions please..
mainactivity.java
import java.io.dataoutputstream; import java.io.file; import java.io.fileinputstream; import java.net.httpurlconnection; import java.net.malformedurlexception; import java.net.url; import android.app.activity; import android.app.progressdialog; import android.content.intent; import android.database.cursor; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.net.uri; import android.os.bundle; import android.provider.mediastore; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.imageview; import android.widget.textview; import android.widget.toast; public class mainactivity extends activity implements onclicklistener{ private textview messagetext; private button uploadbutton, btnselectpic; private imageview imageview; private int serverresponsecode = 0; private progressdialog dialog = null; private string uploadserveruri = null; private string imagepath=null; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); uploadbutton = (button)findviewbyid(r.id.uploadbutton); messagetext = (textview)findviewbyid(r.id.messagetext); btnselectpic = (button)findviewbyid(r.id.button_selectpic); imageview = (imageview)findviewbyid(r.id.imageview_pic); btnselectpic.setonclicklistener(this); uploadbutton.setonclicklistener(this); uploadserveruri = "http://192.168.0.15/uploadtoserver.php"; } @override public void onclick(view arg0) { if(arg0==btnselectpic) { intent intent = new intent(); intent.settype("image/*"); intent.setaction(intent.action_get_content); startactivityforresult(intent.createchooser(intent, "complete action using"), 1); } else if (arg0==uploadbutton) { dialog = progressdialog.show(mainactivity.this, "", "uploading file...", true); messagetext.settext("uploading started....."); new thread(new runnable() { public void run() { uploadfile(imagepath); } }).start(); } } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { log.v("upload image", ""+data); if (requestcode == 1 && resultcode == result_ok) { //bitmap photo = (bitmap) data.getdata().getpath(); uri selectedimageuri = data.getdata(); imagepath = getpath(selectedimageuri); bitmap bitmap=bitmapfactory.decodefile(imagepath); imageview.setimagebitmap(bitmap); messagetext.settext("uploading file path:" +imagepath); } } public string 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(); return cursor.getstring(column_index); } public int uploadfile(string sourcefileuri) { string filename = sourcefileuri; httpurlconnection conn = null; dataoutputstream dos = null; string lineend = "\r\n"; string twohyphens = "--"; string boundary = "*****"; int bytesread, bytesavailable, buffersize; byte[] buffer; int maxbuffersize = 1 * 1024 * 1024; file sourcefile = new file(sourcefileuri); if (!sourcefile.isfile()) { dialog.dismiss(); log.e("uploadfile", "source file not exist :"+imagepath); runonuithread(new runnable() { public void run() { messagetext.settext("source file not exist :"+ imagepath); } }); return 0; } else { try { // open url connection servlet fileinputstream fileinputstream = new fileinputstream(sourcefile); url url = new url(uploadserveruri); // open http connection url conn = (httpurlconnection) url.openconnection(); conn.setdoinput(true); // allow inputs conn.setdooutput(true); // allow outputs conn.setusecaches(false); // don't use cached copy conn.setrequestmethod("post"); conn.setrequestproperty("connection", "keep-alive"); conn.setrequestproperty("enctype", "multipart/form-data"); conn.setrequestproperty("content-type", "multipart/form-data;boundary=" + boundary); conn.setrequestproperty("uploaded_file", filename); dos = new dataoutputstream(conn.getoutputstream()); dos.writebytes(twohyphens + boundary + lineend); dos.writebytes("content-disposition: form-data; name=\"uploaded_file\";filename=\"" + filename + "\"" + lineend); dos.writebytes(lineend); // create buffer of maximum size bytesavailable = fileinputstream.available(); buffersize = math.min(bytesavailable, maxbuffersize); buffer = new byte[buffersize]; // read file , write form... bytesread = fileinputstream.read(buffer, 0, buffersize); while (bytesread > 0) { dos.write(buffer, 0, buffersize); bytesavailable = fileinputstream.available(); buffersize = math.min(bytesavailable, maxbuffersize); bytesread = fileinputstream.read(buffer, 0, buffersize); } // send multipart form data necesssary after file data... dos.writebytes(lineend); dos.writebytes(twohyphens + boundary + twohyphens + lineend); // responses server (code , message) serverresponsecode = conn.getresponsecode(); string serverresponsemessage = conn.getresponsemessage(); log.i("uploadfile", "http response : " + serverresponsemessage + ": " + serverresponsecode); if(serverresponsecode == 200){ runonuithread(new runnable() { public void run() { string msg = "file upload completed.\n\n see uploaded file here : \n\n" +" f:/wamp/wamp/www/uploads"; messagetext.settext(msg); toast.maketext(mainactivity.this, "file upload complete.", toast.length_short).show(); } }); } //close streams // fileinputstream.close(); dos.flush(); dos.close(); } catch (malformedurlexception ex) { dialog.dismiss(); ex.printstacktrace(); runonuithread(new runnable() { public void run() { messagetext.settext("malformedurlexception exception : check script url."); toast.maketext(mainactivity.this, "malformedurlexception", toast.length_short).show(); } }); log.e("upload file server", "error: " + ex.getmessage(), ex); } catch (exception e) { dialog.dismiss(); e.printstacktrace(); runonuithread(new runnable() { public void run() { messagetext.settext("got exception : see logcat "); toast.maketext(mainactivity.this, "got exception : see logcat ", toast.length_short).show(); } }); log.e("upload file server exception", "exception : " + e.getmessage(), e); } dialog.dismiss(); return serverresponsecode; } // end else block } }
multipartentity multipartentity = new multipartentity(httpmultipartmode.browser_compatible); multipartentity.addpart("key", new stringbody("file")); file file = new file(selectedimagepath); multipartentity.addpart("file", new filebody(file)); httppost.setentity(multipartentity); mhttpclient.execute(httppost, new photouploadresponsehandler());
and response methode:
private class photouploadresponsehandler implements responsehandler<object> { @override public object handleresponse(httpresponse response) throws clientprotocolexception, ioexception { httpentity r_entity = response.getentity(); // string responsestring = entityutils.tostring(r_entity); return null; } }
Comments
Post a Comment