从 FTP 服务器获取图片然后在 Android 中转换为位图

get picture from FTP server then convert to Bitmap in Android

根据这个 thread 的回答,我们可以从 FTP 服务器上传和下载:

//UPLOAD
try
{
    FTPClient con = new FTPClient();
    con.connect("192.168.2.57");

    if (con.login("Administrator", "KUjWbk"))
    {
        con.enterLocalPassiveMode(); // important!
        con.setFileType(FTP.BINARY_FILE_TYPE);
        String data = "/sdcard/vivekm4a.m4a";

        FileInputStream in = new FileInputStream(new File(data));
        boolean result = con.storeFile("/vivekm4a.m4a", in);
        in.close();
        if (result) Log.v("upload result", "succeeded");
            con.logout();
            con.disconnect();
        }
    }
catch (Exception e)
{
    e.printStackTrace();
}

//DOWNLOAD
try
{
    FTPClient con = new FTPClient();
    con.connect("192.168.2.57");

    if (con.login("Administrator", "KUjWbk"))
    {
        con.enterLocalPassiveMode(); // important!
        con.setFileType(FTP.BINARY_FILE_TYPE);
        String data = "/sdcard/vivekm4a.m4a";

        OutputStream out = new FileOutputStream(new File(data));
        boolean result = con.retrieveFile("vivekm4a.m4a", out);
        out.close();
        if (result) Log.v("download result", "succeeded");
        con.logout();
        con.disconnect();
    }
}
catch (Exception e)
{
    Log.v("download result","failed");
    e.printStackTrace();
}

在下载部分,是否可以只检索文件(假设文件始终为 jpg)并将其转换为位图,而无需在我的应用程序文件夹中创建文件?

您可以使用picaso库获取从FTP服务器下载的图像并获取其位图。
Picasso 库有特殊方法“target”,它会直接为您提供下载的位图供您编写代码。
希望它能帮助你。 例如

Target target = new Target() {
      @Override
      public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {       
       // You can use the bitmap object here
      }
      @Override
      public void onBitmapFailed() {
      }
}
 Picasso.with(this).load("url").into(target);