Pregunta

Es necesario descargar una sola imagen en el tiempo a través de Internet y luego guardarlo en la tarjeta SD. ¿Cómo lo hago? He hecho un intento, pero cuando intento ver esa imagen descargada, se muestra el mensaje "No hay vista previa disponible". Por favor, vea mi código a continuación:

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);
  }
 }

}

Nota: tengo descargar la imagen de la conexión SSL.

Algunas ideas? Gracias de antemano.

¿Fue útil?

Solución

Puede intentar algo como

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();
    }

Realice los cambios apropiados de acuerdo a sus requerimientos. Yo uso el mismo código para la descarga de archivos desde Internet y guardarlo en tarjeta SD.

Esperamos que ayude !!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top