Загрузить изображение (SSL) и сохранить его на SD-карте в Android?

1

Мне нужно загрузить одно изображение из Интернета, а затем сохранить его на SD-карте. Как мне это сделать? Я сделал попытку, но когда я пытаюсь просмотреть загруженное изображение, оно показывает сообщение "Без предварительного просмотра". См. Мой код ниже:

public class ImgDownloader {

 private static final int IO_BUFFER_SIZE = 4 * 1024;

 public static final byte[] downloadImage(String imgURL) {
  byte[] data = null;
  try {
   Log.v("Down", "1");
   InputStream in = null;
   BufferedOutputStream out = null;
   in = new BufferedInputStream(new URL(imgURL).openStream(), 8 * 1024);
   Log.v("Down", "2");
   final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
   out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
   copy(in, out);
   out.flush();
   Log.v("Down", "3");
   data = dataStream.toByteArray();
   // bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
   Log.v("Down", "4");
  } catch (Exception ex) {
   ex.printStackTrace();
   // System.out.println("Exception in Image Downloader .."
   // +ex.getMessage());
  }
  return data;
 }

 private static void copy(InputStream in, OutputStream out)
   throws IOException {
  byte[] b = new byte[IO_BUFFER_SIZE];
  int read;
  while ((read = in.read(b)) != -1) {
   out.write(b, 0, read);
  }
 }

}

Примечание: Я загрузил изображение из SSL-соединения.

Любые идеи? Спасибо заранее.

Теги:
imagedownload

1 ответ

1
Лучший ответ

Вы можете попробовать что-то вроде

try{
        URL url = new URL(downloadUrl); //you can write here any link
        File file = new File(absolutePath); //Something like ("/sdcard/file.mp3")

            //Create parent directory if it doesn't exists
            if(!new File(file.getParent()).exists())
            {
                System.out.println("Path is created " + new File(file.getParent()).mkdirs());
            }
            file = new File(absolutePath); //Something like ("/sdcard/file.mp3")
            file.createNewFile();
            /* Open a connection to that URL. */
            URLConnection ucon = url.openConnection();
            /*
             * Define InputStreams to read from the URLConnection.
             */
            InputStream is = ucon.getInputStream();
            /*
             * Read bytes to the Buffer until there is nothing more to read(-1).
             */
            FileOutputStream fos = new FileOutputStream(file);
            int size = 1024*1024;
            byte[] buf = new byte[size];
            int byteRead;
            while (((byteRead = is.read(buf)) != -1)) {
                fos.write(buf, 0, byteRead);
                bytesDownloaded += byteRead;
            }
            /* Convert the Bytes read to a String. */

            fos.close();

    }catch(IOException io)
    {
        networkException = true;
        continueRestore = false;
    }
    catch(Exception e)
    {   
        continueRestore = false;
        e.printStackTrace();
    }

Внесите соответствующие изменения в соответствии с вашими требованиями. Я использую тот же код для загрузки файлов из Интернета и сохранения его на SDCard.

Надеюсь, что это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню