【问题标题】:ProgressDialog when uploading files via ftp from an android device从 android 设备通过 ftp 上传文件时的 ProgressDialog
【发布时间】: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时间会一起显示。

标签: android apache ftp


【解决方案1】:

你可以自定义你的对话框,你可以参考下面的链接

http://custom-android-dn.blogspot.in/2013/01/how-to-create-custom-progress-bar-and.html

Android change Horizonal Progress bar color

我想这可能对你有帮助。

这里是custome类的完整代码,

http://www.learn-android-easily.com/2013/05/custom-progress-bar-in-android.html

您必须在异步任务的 preExecute 方法中打开该对话框,然后在 postExecute 方法中将其关闭。

【讨论】:

    猜你喜欢
    • 2014-05-27
    • 2012-04-26
    • 2013-03-24
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    相关资源
    最近更新 更多