【发布时间】:2014-03-03 13:13:28
【问题描述】:
我正在尝试通过 ftp 将文件(大小)上传到我的服务器。
ftp 的上传部分工作正常。
现在我需要.. 1)progressDialog 显示传输(上传)的数据。 2) 如果可能的话,ETA 时间会一起显示。
发布我到目前为止所做的事情。
private class uploadFileTask extends AsyncTask<String, Integer, Long> {
//void FTP_DATA_UPLOAD(String FULL_PATH_TO_LOCAL_FILE)
private ProgressDialog progressDialog;
int progressInput = 0;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("Upload file");
progressDialog.setMessage("Sending file please wait...");
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgress(0);
progressDialog.setMax((int)uploadFilePath1.length());
progressDialog.incrementProgressBy((int)((progressInput*100)/(uploadFilePath1.length())));
progressDialog.show();
}
protected Long doInBackground(String... FULL_PATH_TO_LOCAL_FILE ) {
// encapsulate FTP inside a A sync task
{
System.out.println("Entered FTP transfer function");
FTPClient ftpClient = new FTPClient();
int reply;
try {
System.out.println("Entered Data Upload loop!");
ftpClient.connect("103.27.**.***",21);
ftpClient.login("send", "gelvin");
//ftpClient.changeWorkingDirectory("/directory/");
System.out.println("Entered Data Upload loop!");
int reply1 = ftpClient.getReplyCode();
if(FTPReply.isPositiveCompletion(reply1)){
System.out.println("Connected Success");
}else {
System.out.println("Connection Failed");
ftpClient.disconnect();
}
ftpClient.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
BufferedInputStream buffIn = null;
System.out.println("Created an input stream buffer");
System.out.println(FULL_PATH_TO_LOCAL_FILE.toString());
buffIn = new BufferedInputStream(new FileInputStream(uploadFilePath1));
ftpClient.enterLocalPassiveMode();
System.out.println("Entered binary and passive modes");
// Handler progressHandler=null;
//ProgressInputStream progressInput = new ProgressInputStream(buffIn, progressHandler);
result = ftpClient.storeFile(uploadFileName, buffIn);
//boolean result = ftpClient.storeFile(uploadFileName, buffIn); //localAsset.getFileName()
//ProgressInputStream progressInput = new ProgressInputStream(buffIn, progressHandler);
if (result){
System.out.println("Success");
}
//boolean result = ftpClient.storeFile("TEST.jpg", progressInput);
System.out.println("File saved");
buffIn.close();
ftpClient.logout();
ftpClient.disconnect();
} catch (SocketException e) {
Log.e("SocketException", e.getStackTrace().toString());
System.out.println("Socket Exception!");
} catch (UnknownHostException e) {
Log.e("UnknownHostException", e.getStackTrace().toString());
} catch (IOException e) {
Log.e("IOException", e.getStackTrace().toString());
System.out.println("IO Exception!");
}
return null;
}
}
@Override
protected void onProgressUpdate(Integer... progress) {
super.onProgressUpdate(progress);
progressDialog.setProgress(progress[0]);
}
@Override
protected void onPostExecute(Long result) {
progressDialog.dismiss();
}
}
请帮帮我
【问题讨论】:
-
你的问题是什么?什么不工作? “请帮帮我”通常不是可行的方法。
-
@PhilippJahoda iam 试图通过 ftp 将文件(大小)上传到我的服务器。 ftp 的上传部分工作正常。现在我需要.. 1)progressDialog 显示传输(上传)的数据。 2)如果可能的话,ETA时间会一起显示。