quantum plugin funciona descargar archivos activar abrir java firefox struts

java - plugin - Firefox corta archivos, cuyo nombre contiene espacios, en una aplicación Struts



java(tm) platform firefox (3)

Estoy usando la siguiente clase (simplificada en aras de la comprensibilidad) para descargar imágenes en una aplicación web struts. Funciona bien en todos los navegadores, excepto en firefox, que corta nombres que contienen espacios. Es decir: file with spaces.pdf se descarga en firefox como: archivo mientras está en cromo, IE7 IE6 se descarga como archivo con spaces.pdf .

public class Download extends Action { private static final int BUFFER_SIZE = 4096; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String filename = "file with spaces.pdf"; File file = ... // variable containing the file; response.setStatus(HttpServletResponse.SC_OK); response.setContentType(getMimeType(request, file)); response.setHeader("Content-Type", getMimeType(request, file)); response.setHeader("Content-Disposition","attachment; filename="+ filename); InputStream is = new FileInputStream(file); sendFile(is, response); return null; } protected String getMimeType(HttpServletRequest request, File file) { ServletContext application = super.servlet.getServletContext(); return application.getMimeType(file.getName()); } protected void sendFile(InputStream is, HttpServletResponse response) throws IOException { BufferedInputStream in = null; try { int count; byte[] buffer = new byte[BUFFER_SIZE]; in = new BufferedInputStream(is); ServletOutputStream out = response.getOutputStream(); while(-1 != (count = in.read(buffer))) out.write(buffer, 0, count); out.flush(); } catch (IOException ioe) { System.err.println("IOException in Download::sendFile"); ioe.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } } } }

¿Alguien sabe acerca de lo que está pasando aquí? Tenga en cuenta que estoy usando Firefox 3.0.3 en Windows Vista.


El nombre del archivo debe ser una cadena entre comillas . (De acuerdo con la Sección 19.5.1 de RFC 2616 )

response.setHeader("Content-Disposition","attachment; filename=/"" + filename + "/"");



URLEncode el nombre del archivo?

O al menos sustituya% 20 por el carácter de espacio.

(No sé si esto funcionará, pero pruébalo)

¿Has intentado simplemente poner comillas alrededor del nombre del archivo?