FTP进度条文件上传(FTP progress bar uploading file)

2019-09-21 01:20发布

嗨,大家好,我使用apache.commons.net从SD卡我的文件上传到由文件创建吉拉一个FTP服务器。 然而,所有我想做的就是显示进度给用户。 请你帮助我好吗? 这里是我的代码:

http://pastie.org/4433482

Answer 1:

如果万一你永远解决不了你的问题呢。 我认为这个问题是此行publishProgress内

((int) ((totalBytesTransferred/file.length())*100))

而是试试这个

publishProgress((int) ((totalBytesTransferred * 100)/file.length()))


Answer 2:

没有与此行的一个问题:

publishProgress((int) ((totalBytesTransferred/file.length())*100));

由于totalBytesTransferred是长和File.length()返回长,整数除法将被执行。 因此,这条线将返回零,直到totalBytesTransferred等于file.length()。 然后,它会返回100。

你可以投totalBytesTransferred将这样得到的百分比之前增加一倍:

publishProgress((int) (((double)totalBytesTransferred/file.length())*100));


Answer 3:

在你贴的322线。

org.apache.commons.net.io.Util.copyStream(stO, stD, ftpClient.getBufferSize(),
      CopyStreamEvent.UNKNOWN_STREAM_SIZE,
      new CopyStreamAdapter() {
          public void bytesTransferred(
                   long totalBytesTransferred,
                   int bytesTransferred,
                   long streamSize) {
                      // Your progress Control code here
                      Log.d("CopyStreamAdapter", "bytesTransferred(...) - " +
                            totalBytesTransferred + "; " +
                            bytesTransferred + "; " + 
                            streamSize);
                      publishProgress((int) ((totalBytesTransferred/file.length())*100));
                   }
           }
      );

这我怀疑就是它的失败! 如果你没有得到字符串“CopyStreamAdapter”任何logcat的,这意味着你在这个处理程序不被解雇!



文章来源: FTP progress bar uploading file