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

从Android向服务器发送文件时出现奇怪的问题!,android,file,ftp,send,Android,File,Ftp,Send,我在通过ftp向服务器发送文件(如图片、文本和zip文件)时遇到了一个非常奇怪的问题。大多数情况下,它工作正常。但有时,服务器只有部分文件。 在Android上,我使用com.enterpriseedt.net.ftp。 以下是发送文件的代码段: public void ftpUploadFiles(ArrayList<String> fileList, boolean bDeleteAfterUploaded) { if(fileList.size() <= 0)

我在通过ftp向服务器发送文件(如图片、文本和zip文件)时遇到了一个非常奇怪的问题。大多数情况下,它工作正常。但有时,服务器只有部分文件。 在Android上,我使用com.enterpriseedt.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);
    }
}
public void ftpuploaddiles(ArrayList文件列表,boolean-bdeleteafterupload)
{

如果(fileList.size()您的代码似乎只处理完整的文件。因此,它应该只对完整的文件成功或失败。这只剩下com.enterprisedt.net.ftp包,它可能会发送部分文件,例如,当网络发生故障时

如果传输因网络拥塞等原因中断,则可能会出现问题。“如果网络连接中断,服务器可能仍然认为您已连接(因为尚未调用quit())。因此,新连接和尝试恢复可能会因以下原因而失败。”()


因此,我认为ftp软件在网络故障方面存在缺陷,或者您的代码没有处理ftp软件对网络故障的处理。

您的应用程序在传输过程中是否处于活动状态?设备是否可能在ftp传输过程中进入睡眠状态?据推测,应用程序应该处于活动状态。但我们不会强迫它不进入睡眠状态。此外,我们也这样做了我正在测试,让设备进入睡眠状态,而ftp线程仍然可以正常工作。即使设备进入睡眠状态,它也可以正常完成工作。这个问题只发生在有一些最终用户的领域。我们无法真正在内部重新创建它。