将文件从Android发送到服务器时出现奇怪的问题!

时间:2011-03-24 20:35:57

标签: android file ftp send

我通过ftp将文件(如图片,文本和zip文件)发送到服务器时遇到了一个非常奇怪的问题。大多数时候,它工作正常。但有时,服务器只有部分文件。 在Android上,我使用com.enterprisedt.net.ftp。 这是发送文件的代码片段:

public void ftpUploadFiles(ArrayList<String> fileList, boolean bDeleteAfterUploaded)
{
    if(fileList.size() <= 0)
        return;

    // set up to transfer the files
    FileTransferClient ftp = null;
    try 
    {
        //Make sure there is only FTP in the whole system at any given time.
        synchronized(this)
        {
            // create client
            ftp = new FileTransferClient();
            // set remote host
            ftp.setRemoteHost("xxxxxxx");

            ftp.setUserName("xxxxxx");
            ftp.setPassword("xxxxx");

            // connect to the server
            ftp.connect();
            ftp.getAdvancedFTPSettings().setConnectMode(FTPConnectMode.PASV);
            //1. Upload each file
            for(int i = 0 ; i < fileList.size(); i++)
            {
                if(!FileKit.fileExist(fileList.get(i)))
                    continue;

                ftp.uploadFile(fileList.get(i), FileKit.getFileName(fileList.get(i)));

                if(bDeleteAfterUploaded)
                    FileKit.fileDelete(fileList.get(i));
            }

            ftp.disconnect();
        } //End of synchronized
    } catch (Exception e) 
    {
        FileKit.handleException(e);
    }
}

FileKit是常规文件功能的静态总结类。 ftpUploadFiles()由一个Intent在一个单独的线程中调用,因此它可以在后台运行。似乎发生的是,ftp在完成传输文件之前停止,因此服务器只获取文件的一部分。基于上面的代码,可能导致问题的原因是什么?或者是否可能是com.enterprisedt.net.ftp的问题?

感谢。

1 个答案:

答案 0 :(得分:0)

您的代码似乎只能处理完整的文件。因此,仅对于完整文件,它应该成功还是失败。这样就只剩下com.enterprisedt.net.ftp程序包了,该程序包可以分部分发送文件,例如,当网络故障发生时。

如果由于网络拥塞等原因导致传输中断,可能会出现问题。“如果网络连接中断,服务器可能仍认为您已连接(因为尚未调用quit()。)因此,连接和尝试恢复可能由于以下原因而失败。” (https://enterprisedt.com/forums/viewtopic.php?t=960

因此,我认为ftp软件在网络故障方面存在错误,或者您的代码无法处理ftp软件对网络故障的处理。