Estoy escribiendo un servlet de descarga de archivos simple y no puedo obtener los nombres correctos de los archivos. Intentó URLEncoding y MimeEncoding el nombre del archivo como se ve en las respuestas existentes, pero ninguno de ellos funcionó.Java servlet download nombre de archivo caracteres especiales
El objeto fileData en el siguiente fragmento contiene el tipo de mimo, el contenido de bytes [] y el nombre de archivo, que necesita al menos un juego de caracteres ISO-8859-2, ISO-8859-1 no es suficiente.
¿Cómo puedo hacer para que mi navegador muestre correctamente el nombre del archivo descargado?
Aquí se muestra un ejemplo del nombre de archivo: árvíztűrőtükörfúrógép.xls y el resultado es: árvíztqrptükörfúrógép.xls
protected void renderMergedOutputModel(Map model, HttpServletRequest req, HttpServletResponse res) throws Exception {
RateDocument fileData = (RateDocument) model.get("command.retval");
OutputStream out = res.getOutputStream();
if(fileData != null) {
res.setContentType(fileData.getMime());
String enc = "utf-8"; //tried also: ISO-8859-2
String encodedFileName = fileData.getName();
// also tried URLencoding and mime encoding this filename without success
res.setCharacterEncoding(enc); //tried with and without this
res.setHeader("Content-Disposition", "attachment; filename=" + encodedFileName);
res.setContentLength(fileData.getBody().length);
out.write(fileData.getBody());
} else {
res.setContentType("text/html");
out.write("<html><head></head><body>Error downloading file</body></html>"
.getBytes(res.getCharacterEncoding()));
}
out.flush();
}
favor dar algunos ejemplos de cómo se ven los nombres de archivos y lo que se obtiene en su lugar. – BalusC
árvíztűrőtükörfúrógép.xls -> árvíztqrptükörfúrógép.xls – jabal
Sí, tienes razón. Estos dos caracteres no están en ISO-8859-1 solo en ISO-8859-2, causando muchos problemas para cada desarrollador húngaro ... :-) – jabal