Wednesday, 27 November 2013

Upload File Using Ftp

Upload images,audio,video,mp3,doc,pdf all type of file on a server.
Please follow this step:
Step1) Create a Activity:  ImageUploadActivity.class

package com.vin.uploadfile;

import java.io.File;
import java.io.InputStream;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
public class ImageUploadActivity extends Activity {
String desDirectory="/uploadtest/";
Button uploagimage;
InputStream in;
String sourceUrl,filename;
private Uri mImageCaptureUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uploagimage=(Button) findViewById(R.id.button1);
uploagimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(isNetworkAvailable())
{
    getFileImage();
}else{
AlertDialog.Builder b=new AlertDialog.Builder(ImageUploadActivity.this);
b.setMessage("Internet connectivity failure.Try again!");
b.show();
}
}
});
}

public void getFileImage()
{
    final String [] items           = new String [] {"File", "Image"};
    ArrayAdapter<String> adapter  = new ArrayAdapter<String> (getApplicationContext(), android.R.layout.select_dialog_item,items);
    AlertDialog.Builder builder     = new AlertDialog.Builder(ImageUploadActivity.this);
    builder.setTitle("Select");
    builder.setAdapter( adapter, new DialogInterface.OnClickListener() {
        public void onClick( DialogInterface dialog, int item ) {
            if (item == 0) {
                Intent intent = new Intent();
                intent.setType("file/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Complete action using"), Constant.PICK_FROM_FILE);
            } else {
                selectImage();

            }
        }
    } );
    final AlertDialog dialog = builder.create();
    dialog.show();  
    dialog.setOnCancelListener(new DialogInterface.OnCancelListener(){

        public void onCancel(DialogInterface dialog) {

        }
    });
}
public void selectImage()
{
    final String [] items           = new String [] {"From Camera", "From SD Card"};
    ArrayAdapter<String> adapter  = new ArrayAdapter<String> (getApplicationContext(), android.R.layout.select_dialog_item,items);
    AlertDialog.Builder builder     = new AlertDialog.Builder(ImageUploadActivity.this);
    builder.setTitle("Select");
    builder.setAdapter( adapter, new DialogInterface.OnClickListener() {
        public void onClick( DialogInterface dialog, int item ) {
            if (item == 0) {
                Intent intent    = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                File file        = new File(Environment.getExternalStorageDirectory(),
                        String.valueOf(System.currentTimeMillis()) + "_FromCamera.jpg");
                Uri mImageCaptureUri = Uri.fromFile(file);
                try {
                    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
                    intent.putExtra("return-data", true);
                    startActivityForResult(intent, Constant.PICK_FROM_CAMERA);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                // dialog.cancel();
            } else {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Complete action using"), Constant.PICK_FROM_FILE);
            }
        }
    } );
    final AlertDialog dialog = builder.create();
    dialog.show();  
    dialog.setOnCancelListener(new DialogInterface.OnCancelListener(){

        public void onCancel(DialogInterface dialog) {

        }
    });
}
public String getPath(Uri uri, Activity activity) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = activity.getContentResolver().query(uri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    sourceUrl="";
    filename="";

    if (requestCode == Constant.PICK_FROM_FILE)
    {
       
        if (resultCode == Activity.RESULT_OK)
        {
            mImageCaptureUri = data.getData();
            try
            {
                sourceUrl = getPath(mImageCaptureUri,ImageUploadActivity.this); //from Gallery
            }
            catch(Exception e)
            {
                sourceUrl = mImageCaptureUri.getPath();
                Log.i("check image attach or not", e.toString());
            }
            if (sourceUrl == null)
            {
                sourceUrl = mImageCaptureUri.getPath(); //from File Manager
                String arr[] = sourceUrl.split("/");
                int i;
                String k = null;
                for(i=0;i<arr.length;i++)
                {
                    k=arr[i];       
                }
                filename="_"+String.valueOf(System.currentTimeMillis())+k;
                new UploadTask().execute();
            }
            if (sourceUrl != null)
            {
                String arr[] = sourceUrl.split("/");
                int i;
                String k = null;
                for(i=0;i<arr.length;i++)
                {
                    k=arr[i];       
                }
                filename="_"+String.valueOf(System.currentTimeMillis()) +k;
                new UploadTask().execute();
            }
        }
    }
    else if(requestCode == Constant.PICK_FROM_CAMERA)
    {
       
        if (resultCode == Activity.RESULT_OK)
        {
            mImageCaptureUri = data.getData();
            sourceUrl= mImageCaptureUri.getPath();

            String arr[] = sourceUrl.split("/");
            int i;
            String k = null;
            for(i=0;i<arr.length;i++)
            {
                k=arr[i];       
            }
            filename="_"+String.valueOf(System.currentTimeMillis()) +k;
            new UploadTask().execute();
        }
    }
}

class UploadTask extends AsyncTask<Void, Void, Void> {
ProgressDialog pDialog;
Boolean uploadStat;
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(ImageUploadActivity.this);

pDialog.setMessage("Uploading...");
pDialog.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
uploadStat=new UploadToFtp().ftpUpload1(sourceUrl, filename, desDirectory);
runOnUiThread(new Runnable() {
@Override
public void run() {
if(uploadStat)
{
AlertDialog.Builder b=new AlertDialog.Builder(ImageUploadActivity.this);
b.setMessage("Upload Successful");
b.show();
}else{
AlertDialog.Builder b=new AlertDialog.Builder(ImageUploadActivity.this);
b.setMessage("Upload Failed.");
b.show();
}
}
});
return null;
}
@Override
protected void onPostExecute(Void result) {
if (null != pDialog && pDialog.isShowing()) {
pDialog.dismiss();
}
super.onPostExecute(result);
}
}
// Check Internet Connection!!!
public boolean isNetworkAvailable() {
ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
}

 Step 2) Create Class: UploadToFtp.class

package com.vin.uploadfile;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import android.app.ProgressDialog;
import android.widget.ProgressBar;
public class UploadToFtp {
public FTPClient mFTPClient = null;
public boolean ftpUpload1(String srcFilePath,String desFileName,String desDirectory)
{
String host="ftphost";
String username="username";
String password="password";
int port=21;
mFTPClient = new FTPClient();
boolean status = false;
try {
mFTPClient.connect(host, port);//&nbsp; // connecting to the host
mFTPClient.login(username, password);//&nbsp; //Authenticate using username and password
mFTPClient.changeWorkingDirectory(desDirectory); //change directory to that directory where image will be uploaded
mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
BufferedInputStream buffIn = null;
File file=new File(srcFilePath);
buffIn = new BufferedInputStream(new FileInputStream(file),8192);
mFTPClient.enterLocalPassiveMode();
status = mFTPClient.storeFile(desFileName, buffIn);
buffIn.close();
mFTPClient.logout();
mFTPClient.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return status;
}
}
 Step 3) Create Class: Constant.class

package com.vin.uploadfile;

public class Constant {
    public static int PICK_FROM_CAMERA=1;
    public static int PICK_FROM_FILE=2;
}