Estoy tratando de leer una imagen de una URL (con el paquete java java.net.URL) a un byte []. "Todo" funciona bien, excepto que el contenido no se lee completamente de la transmisión (la imagen está corrupta, no contiene todos los datos de imagen) ... La matriz de bytes se está conservando en una base de datos (BLOB). Realmente no sé lo que el enfoque correcto es, tal vez usted me puede dar un consejo :)java.net.URL leer flujo a byte []
Ésta es mi primera aproximación (código de formato, informaciones innecesarias eliminadas ...):
URL u = new URL("http://localhost:8080/images/anImage.jpg");
int contentLength = u.openConnection().getContentLength();
Inputstream openStream = u.openStream();
byte[] binaryData = new byte[contentLength];
openStream.read(binaryData);
openStream.close();
Mi segundo enfoque era ésta (como se verá el ContentLength se fue a buscar otra manera):
URL u = new URL(content);
openStream = u.openStream();
int contentLength = openStream.available();
byte[] binaryData = new byte[contentLength];
openStream.read(binaryData);
openStream.close();
Tanto el resultado de código en una imagen dañada ... yo ya leí este post from stackoverflow
Por favor, nunca escriba una captura vacía- bloquear, ni siquiera en un ejemplo! Ponga al menos 'e.printStackTrace()' allí! Los ejemplos tienen una tendencia a convertirse en código de producción y todos tenemos que trabajar con eso más adelante. –
Tienes toda la razón; gracias por señalar eso. Agregué un manejo de excepciones más significativo al ejemplo. – RTBarnard
Use http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toByteArray(java.io.InputStream). Esto hará que el código se vea mucho más limpio. – Adi