Я столкнулся с очень странной проблемой при отправке файлов, таких как картинки, текстовые и zip-файлы, на сервер через ftp.В большинстве случаев все работает нормально.Но иногда сервер имеет только часть файла.На 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?
Спасибо.