My application is uploading the file from SD Card to the directory on FileZilla FTP Server. After running my appliaction it gives me exception which I am unable to resolve after so many searches.
here is the log cat output:
06-24 11:06:53.715: W/System.err(1304): java.io.IOException: SimpleFTP received an unknown response when connecting to the FTP server: 220-FileZilla Server version 0.9.41 beta
06-24 11:06:54.055: W/System.err(1304): at org.jibble.simpleftp.SimpleFTP.connect(SimpleFTP.java:74)
06-24 11:06:54.087: W/System.err(1304): at com.example.upload1.MainActivity$UploadVideo.doInBackground(MainActivity.java:63)
06-24 11:06:54.167: W/System.err(1304): at com.example.upload1.MainActivity$UploadVideo.doInBackground(MainActivity.java:1)
06-24 11:06:54.167: W/System.err(1304): at android.os.AsyncTask$2.call(AsyncTask.java:287)
06-24 11:06:54.167: W/System.err(1304): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-24 11:06:54.167: W/System.err(1304): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-24 11:06:54.167: W/System.err(1304): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
06-24 11:06:54.167: W/System.err(1304): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-24 11:06:54.403: W/System.err(1304): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-24 11:06:54.403: W/System.err(1304): at java.lang.Thread.run(Thread.java:856)
and this is my code for the MainActivity.java
import java.io.File;
import org.jibble.simpleftp.SimpleFTP;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
//import com.kpbird.ftpdemo.R;
public class MainActivity extends Activity implements OnClickListener {
//FTPClient client;
/********* work only for Dedicated IP ***********/
static final String FTP_HOST= "203.199.134.131";
/********* FTP USERNAME ***********/
static final String FTP_USER = "a_gupta";
/********* FTP PASSWORD ***********/
static final String FTP_PASS ="AditI123";
Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(this);
}
public void onClick(View v) {
UploadFile async = new UploadFile();
async.execute();
}
class UploadFile extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
// ftpClient=uploadingFilestoFtp();
try {
SimpleFTP ftp = new SimpleFTP();
ftp.connect(FTP_HOST, 21, FTP_USER, FTP_PASS);
ftp.bin();
// Change to a new working directory on the FTP server.
ftp.cwd("callrecording");
// Upload some files.
ftp.stor(new File(Environment.getExternalStorageDirectory().getParent() + "/invite_json.txt"));
// ftp.stor(new File("comicbot-latest.png"));
// You can also upload from an InputStream, e.g.
// ftp.stor(new FileInputStream(new File("test.png")),
// "test.png");
// ftp.stor(someSocket.getInputStream(), "blah.dat");
// Quit from the FTP server.
ftp.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// dialog.show();
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Toast.makeText(MainActivity.this, "sent", Toast.LENGTH_LONG).show();
}
}
Upload files using FilezillaIn the left pane, navigate and select the files and folders you wish to upload to the server. Most FTP clients allow you to simply drag and drop files from one pane to the other to initiate an upload. Alternatively, highlight the files, right-click, and select Upload.
To do this, open a Windows' File Explorer window and type ftp://[server name] or ftp://X.X.X.X where 'X' symbolizes the IP address of the FTP server, e.g. the IP address of your cRIO controller. You can then copy and paste files to or from the server like you would do with any normal folder on your storage as well.
If you can download files from a remote server but not upload to, the most common reason is that the server has run out of disk space, or you've exceeded a storage quota assigned to the FTP user or group (for example, your company).
After so many days i worked on this thing again and successfuly got the things working. So, I am posting my answer.Hope it would help some one.
This is my Main Activity Code:
package com.example.ftpup;
import it.sauronsoftware.ftp4j.FTPAbortedException;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPDataTransferException;
import it.sauronsoftware.ftp4j.FTPDataTransferListener;
import it.sauronsoftware.ftp4j.FTPException;
import it.sauronsoftware.ftp4j.FTPIllegalReplyException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
/********* work only for Dedicated IP ***********/
static final String FTP_HOST= "203.199.134.131";
/********* FTP USERNAME ***********/
static final String FTP_USER = "a_gupta";
/********* FTP PASSWORD ***********/
static final String FTP_PASS ="AditI123";
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
Button btn;
FTPClient client = new FTPClient();
private ProgressDialog mProgressDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.uploadButton);
btn.setOnClickListener(this);
}
public void onClick(View v) {
startDownload();
}
// /******* Used to file upload and show progress **********/
private void startDownload() {
//Pick file
//File f = new File("/sdcard/invite_json.txt");
// Async task
new DownloadFileAsync().execute();
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DOWNLOAD_PROGRESS:
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Downloading file..");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
return mProgressDialog;
default:
return null;
}
}
// Upload sdcard file
//public void uploadFile(File fileName){
class DownloadFileAsync extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS);
}@Override
protected String doInBackground(String... filename) {
String sdcard = Environment.getExternalStorageDirectory().toString();
File file = new File(sdcard+"/androrec/");
//File file2 = new File("/mnt/sdcard/CallRecorderBackup");
File[] listofFiles = file.listFiles();
Log.d("No. of files" ,fileArrayToString(listofFiles));
try{
client.connect(FTP_HOST,21);
for (int i = 0; i <=listofFiles.length ; i++) {
Log.d("Tag 4", "inside of ftp connect");
Log.d("Tag 1", "inside of for loop");
if (listofFiles == null || listofFiles[i].isFile()) {
Log.d("Tag 2", "inside of if");
String files = listofFiles[i].getName();
Log.d("Tag 3", "inside of files");
File filetoload = new File(sdcard+"/androrec/"+files);
String uploadingFiles = filetoload.toString();
Log.d("Files uploading to the server", uploadingFiles);
client.login(FTP_USER, FTP_PASS);
//client.connect(FTP_HOST,21);
Log.d("Tag 4", "inside of ftp connect");
Log.d("Tag 5", "inside of for ftp pass");
//client.setType(FTPClient.TYPE_BINARY);
//client.changeDirectory("/");
Log.d("Tag 6", "inside of for dir");
client.upload(filetoload);
Log.d("Tag 7", "inside of download");
//out.write(buf, 0, len);
//}
//}
// client.upload(in, new MyTransferListener());
}
else{
}
//client.disconnect(true);
}
}
catch (IllegalStateException | IOException
| FTPIllegalReplyException | FTPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FTPDataTransferException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FTPAbortedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
client.disconnect(true);
} catch (Exception e2) {
e2.printStackTrace();
}
return null;
}
/*}
}*/
@Override
protected void onPostExecute(String unused) {
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
}
}
// }
String fileArrayToString(File[] f){
String output = "";
String delimiter = "\n" ;// Can be new line \n tab \t etc...
for (int i=0; i<f.length; i++)
{
output = output + f[i].getPath() + delimiter;
}
return output;
}
}
Please check the log cat while your application is running you will get to know how this is working. Thanks.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With