Cara Upload File dari Android ke Server (PHP)
Oleh Afa HernandesDiperbarui 9 menit baca
Kali ini saya akan membagikan sebuah tutorial bagaimana caranya membuat upload gambar ke server menggunakan Android Studio. berikut ini adalah contoh source code nya. silahkan dicoba dan dikembangkan dan semoga ilmunya bisa bermanfaat.

Layout
uploadserver.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<ImageViewandroid:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_weight="1"android:id="@+id/imageView" />
<Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Choose File"android:id="@+id/btnpilih"/>
<Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Camera"android:id="@+id/btncamera"/>
<Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Click To Upload File"android:id="@+id/uploadButton"/>
<TextViewandroid:layout_width=“fill_parent”
android:layout_height=“wrap_content”
android:text=""android:id="@+id/messageText"android:textColor="#000000"android:textStyle="bold"/></LinearLayout>
JavaUploadToServer.java
package com.example.apppembangunanmasjid;import java.io.ByteArrayOutputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;
import android.app.Activity;import android.app.ProgressDialog;import android.content.ContentValues;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.MediaPlayer;import android.net.Uri;import android.os.AsyncTask;import android.os.Bundle;import android.provider.MediaStore;import android.util.Base64;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;
import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;
public class UploadToServer extends Activity {String myip="",id_laporan="",myFILE="";JSONParser jsonParser = new JSONParser();
private static final int PICK_IMAGE = 1;private static final int PICK_Camera_IMAGE = 2;private ImageView imgView;private Button upload,cancel;private Bitmap bitmap;Uri imageUri;MediaPlayer mp=new MediaPlayer();
String URL="",NFUpload="";TextView messageText;Button uploadButton,btnpilih,btncamera;int serverResponseCode = 0;ProgressDialog dialog = null;
String upLoadServerUri = null;
/********** File Path *************/final String uploadFilePath = "/mnt/sdcard/";String uploadFileName = "myfile.jpg";
@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.uploadserver);
Intent ia = getIntent();id_laporan = ia.getStringExtra("pk");
imgView = (ImageView) findViewById(R.id.imageView);uploadButton = (Button)findViewById(R.id.uploadButton);messageText = (TextView)findViewById(R.id.messageText);
btnpilih = (Button)findViewById(R.id.btnpilih);btncamera = (Button)findViewById(R.id.btncamera);
btnpilih.setVisibility(View.GONE);messageText.setText(uploadFilePath+"/"+uploadFileName+"'");
/************* Php script path ****************/URL=jsonParser.getIP()+"uploadserver.php";upLoadServerUri = URL;//"http://www.lp2maray.com/media/UploadToServer.php";
uploadButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {
dialog = ProgressDialog.show(UploadToServer.this, "", "Uploading file...", true);
new Thread(new Runnable() {public void run() {runOnUiThread(new Runnable() {public void run() {messageText.setText("uploading started.....");}});String AL=messageText.getText().toString();File f=new File(AL);myFILE=f.getName();uploadFiles(AL);
}}).start();
}});
btnpilih.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {try {Intent gintent = new Intent();gintent.setType("image/*");gintent.setAction(Intent.ACTION_GET_CONTENT);startActivityForResult(Intent.createChooser(gintent, "Select Picture"),PICK_IMAGE);} catch (Exception e) {Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show();Log.e(e.getClass().getName(), e.getMessage(), e);}}});
btncamera.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//define the file-name to save photo taken by Camera activity
String fileName = “new-photo-name.jpg”;
//create parameters for Intent with filename
ContentValues values = new ContentValues();values.put(MediaStore.Images.Media.TITLE, fileName);values.put(MediaStore.Images.Media.DESCRIPTION,"Image captured by camera");//imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);//create new IntentIntent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);startActivityForResult(intent, PICK_Camera_IMAGE);}});}
public int uploadFiles(String sourceFileUri) {String fileName = sourceFileUri;NFUpload=fileName;uploadFileName=NFUpload;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.d("uploadFile", "Source File not exist :"+uploadFilePath + "" + uploadFileName);
runOnUiThread(new Runnable() {public void run() {messageText.setText("Source File not exist :" +uploadFilePath + "" + uploadFileName);}});
return 0;
}else{try {// open a URL connection to the Servlet
FileInputStream fileInputStream = new FileInputStream(sourceFile);URL url = new URL(upLoadServerUri);// Open a HTTP connection to the URL
conn = (HttpURLConnection) url.openConnection();conn.setDoInput(true); // Allow Inputsconn.setDoOutput(true); // Allow Outputsconn.setUseCaches(false); // Don't use a Cached Copyconn.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 a buffer of maximum size
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);buffer = new byte[bufferSize];// read file and write it into 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 from the server (code and message)
serverResponseCode = conn.getResponseCode();String serverResponseMessage = conn.getResponseMessage();
Log.i("uploadFile", "HTTP Response is : "+ serverResponseMessage + ": " + serverResponseCode);
if(serverResponseCode == 200){
runOnUiThread(new Runnable() {public void run() {
String msg = "File Upload Completed:" + uploadFileName;
messageText.setText(msg);Toast.makeText(UploadToServer.this, "File Upload Complete.",Toast.LENGTH_SHORT).show();}});}
//close the streams //fileInputStream.close();dos.flush();dos.close();
Intent i = new Intent(UploadToServer.this,Asset.class);i.putExtra("upload", myFILE);i.putExtra("pk", id_laporan);startActivity(i);finish();
} catch (MalformedURLException ex) {
dialog.dismiss();ex.printStackTrace();
runOnUiThread(new Runnable() {public void run() {messageText.setText("MalformedURLException Exception : check script url.");Toast.makeText(UploadToServer.this, "MalformedURLException", Toast.LENGTH_SHORT).show();}});
Log.e("Upload file to 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(UploadToServer.this, "Got Exception : see logcat ",Toast.LENGTH_SHORT).show();}});
}dialog.dismiss();return serverResponseCode;
} // End else block}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {Uri selectedImageUri = null;String filePath = null;switch (requestCode) {case PICK_IMAGE:if (resultCode == Activity.RESULT_OK) {selectedImageUri = data.getData();}break;case PICK_Camera_IMAGE:if (resultCode == RESULT_OK) {//use imageUri here to access the image
selectedImageUri = imageUri;/*Bitmap mPic = (Bitmap) data.getExtras().get("data");selectedImageUri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), mPic, getResources().getString(R.string.app_name), Long.toString(System.currentTimeMillis())));*/} else if (resultCode == RESULT_CANCELED) {Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT).show();} else {Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT).show();}break;}
if(selectedImageUri != null){try {// OI FILE ManagerString filemanagerstring = selectedImageUri.getPath();
// MEDIA GALLERYString selectedImagePath = getPath(selectedImageUri);
messageText.setText(selectedImagePath);
if (selectedImagePath != null) {filePath = selectedImagePath;} else if (filemanagerstring != null) {filePath = filemanagerstring;} else {Toast.makeText(getApplicationContext(), "Unknown path",Toast.LENGTH_LONG).show();Log.e("Bitmap", "Unknown path");}
if (filePath != null) {decodeFile(filePath);} else {bitmap = null;}} catch (Exception e) {Toast.makeText(getApplicationContext(), "Internal error",Toast.LENGTH_LONG).show();Log.e(e.getClass().getName(), e.getMessage(), e);}}
}
class ImageGalleryTask extends AsyncTask<Void, Void, String> {@SuppressWarnings("unused")@Overrideprotected String doInBackground(Void... unsued) {InputStream is;BitmapFactory.Options bfo;Bitmap bitmapOrg;ByteArrayOutputStream bao ;
bfo = new BitmapFactory.Options();bfo.inSampleSize = 2;//bitmapOrg = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/" + customImage, bfo);
bao = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 90, bao);byte [] ba = bao.toByteArray();// String ba1 = Base64.encodeBytes(ba);
String ba1 = Base64.encodeToString(ba,1);ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();nameValuePairs.add(new BasicNameValuePair("image",ba1));nameValuePairs.add(new BasicNameValuePair("cmd","image_android"));Log.v("log_tag", System.currentTimeMillis()+".jpg");try{HttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new
// Here you need to put your server file address
HttpPost(URL);//"http://www.picsily.com/upload_photo.php");httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));HttpResponse response = httpclient.execute(httppost);HttpEntity entity = response.getEntity();is = entity.getContent();Log.v("log_tag", "In the try Loop" );}catch(Exception e){Log.v("log_tag", "Error in http connection "+e.toString());}return "Success";// (null);}
@Overrideprotected void onProgressUpdate(Void... unsued) {
}
@Overrideprotected void onPostExecute(String sResponse) {try {if (dialog.isShowing())dialog.dismiss();} catch (Exception e) {Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show();Log.e(e.getClass().getName(), e.getMessage(), e);}}
}
public String getPath(Uri uri) {String[] projection = { MediaStore.Images.Media.DATA };Cursor cursor = managedQuery(uri, projection, null, null, null);if (cursor != null) {// HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
// THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);cursor.moveToFirst();return cursor.getString(column_index);} elsereturn null;}
public void decodeFile(String filePath) {// Decode image sizeBitmapFactory.Options o = new BitmapFactory.Options();o.inJustDecodeBounds = true;BitmapFactory.decodeFile(filePath, o);// The new size we want to scale to
final int REQUIRED_SIZE = 1024;
// Find the correct scale value. It should be the power of 2.
int width_tmp = o.outWidth, height_tmp = o.outHeight;int scale = 1;while (true) {if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE)break;width_tmp /= 2;height_tmp /= 2;scale *= 2;}
// Decode with inSampleSizeBitmapFactory.Options o2 = new BitmapFactory.Options();o2.inSampleSize = scale;bitmap = BitmapFactory.decodeFile(filePath, o2);
imgView.setImageBitmap(bitmap);
}
}
Button Upload
Button btnupload=(Button)findViewById(R.id.btnUpload);btnupload.setOnClickListener(new View.OnClickListener() {public void onClick(View arg0) {Intent i = new Intent(Asset.this,UploadToServer.class);startActivity(i);finish();}});

