Я пытаюсь загрузить изображение с FTP-сервера с помощью UIL. Для этого я создал FTPImageDownloader
. Я использую apache-commons-ftpclient. Код указан ниже:Универсальный загрузчик изображений, скачать изображение с FTP
public class FTPImageDownloader implements ImageDownloader {
public static String FTP_SERVER_HOST = "xx.xx.xxx.xxx";
public static int FTP_SERVER_PORT =xx;
public static String FTP_LOGIN = "xxxxxxx";
public static String FTP_PASSWORD = "xxxxxxx";
@Override
public InputStream getStream(String imageUri, Object extra) throws IOException {
return getFTPStream(imageUri);
}
public InputStream getFTPStream(String url) throws IOException {
FTPClient con = null;
final String imageUrl = url;
try
{
con = new FTPClient();
con.connect(FTP_SERVER_HOST);
if (con.login(FTP_LOGIN, FTP_PASSWORD))
{
con.enterLocalPassiveMode();
con.setFileType(FTP.BINARY_FILE_TYPE);
return con.retrieveFileStream(imageUrl);
}
}
catch (Exception e)
{
Log.v("download result","failed");
e.printStackTrace();
} finally {
con.logout();
con.disconnect();
}
return null;
}}
Это работает, но очень медленно. Это особенно заметно при одновременном загрузке нескольких изображений.
Я думаю, что причиной медленной работы ImageLoader является то, что каждая фотография открывает новое соединение. Если это так, то скажите мне, как сделать такие соединения, как singleton. Благодарю.
Благодарим вас за ответ, но Universal Image Loader lib (который я использую) справляется с несколькими загрузками изображений. Проблема заключается в реализации FTPImageDownloader, он получает изображение InputStream. – Alex