Pregunta

Estoy enviando un archivo al navegador en un servlet.El JDK más alto que puedo usar es 1.4.2, y también tengo que recuperar el archivo a través de una URL.También estoy tratando de usar "guessContentTypeFromStream", pero sigo obteniendo un valor nulo, lo que genera una excepción cuando se usa en el ejemplo de código a continuación.Actualmente tengo que codificar o resolver el tipo de contenido yo mismo.

Lo que me gustaría saber es, ¿cómo puedo volver a factorizar este código para que la transmisión del archivo sea lo más rápida posible y también usar guessContentTypeFromStream?(Tenga en cuenta que "res" es HttpServletResponse).

URL servletUrl = new URL(sFileURL); 
URLConnection conn = servletUrl.openConnection();
int read;
BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());

String sContentType =conn.guessContentTypeFromStream(conn.getInputStream());

res.setContentType(sContentType);
//res.setContentType("image/jpeg");

PrintWriter os = res.getWriter();

while((read = bis.read()) != -1){
    os.write(read);
}
//Clean resources
os.flush();
¿Fue útil?

Solución

Así es como normalmente lee / escribe datos.

in = new BufferedInputStream(socket.getInputStream(), BUFFER_SIZE);
byte[] dataBuffer = new byte[1024 * 16];
int size = 0;
while ((size = in.read(dataBuffer)) != -1) {
    out.write(dataBuffer, 0, size);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top