【问题标题】:Strange problem while sending file from Android to server!将文件从 Android 发送到服务器时出现奇怪的问题!
【发布时间】:2011-07-22 11:07:57
【问题描述】:

我在通过 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 的问题?

谢谢。

【问题讨论】:

  • 您的应用在传输过程中是否处于活动状态? ftp传输期间设备是否可能进入睡眠状态?
  • 据说,该应用程序应该处于活动状态。但我们不强迫它不去睡觉。此外,我们做了一些测试,让设备进入睡眠状态,而 ftp 线程仍然可以正常工作。即使设备进入睡眠状态,它也能很好地完成工作。此问题仅发生在某些最终用户的字段中。我们无法真正在内部重新创建它。

标签: android file ftp send


【解决方案1】:

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

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

所以我认为要么是 ftp 软件存在网络故障错误,要么您的代码没有处理 ftp 软件对网络故障的处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-12
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2012-06-10
    • 1970-01-01
    相关资源
    最近更新 更多