Universal Image Loader,从FTP下载图像

时间:2015-12-11 15:57:48

标签: android ftp universal-image-loader

我正在尝试使用UIL从FTP服务器上传图像。为此,我创建了一个FTPImageDownloader。我使用apache-commons-ftpclient。代码如下:

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这样的连接。感谢。

3 个答案:

答案 0 :(得分:0)

将队列用于多个网络调用,例如https://github.com/path/android-priority-jobqueue

答案 1 :(得分:0)

尝试在AndroidManifest.xml文件中添加互联网权限:

uses-permission android:name="android.permission.INTERNET"

答案 2 :(得分:0)

问题是使用FTP服务器。我们现在迁移到使用Http,一切都很好。如果要从FTP下载图像,问题中显示的代码可以使用,您可以将它与Universal Image Loader结合使用。