Necesito prestar atención a dos lugares:
1: Habrá códigos confusos en IE, por lo que debe usar la parte userAgent para tratar
2: Después de ingresar el método, no se descargará y no hay respuesta. Mi situación es porque usé AJAX para enviar, así que tengo que resolver este problema.
1: Establecer parámetros AJAX
2: cambiar un método de solicitud en lugar de AJAX
public ActionForward creatCollectFileReport (mapeo ActionMapping,
formulario ActionForm, solicitud HttpServletRequest,
respuesta HttpServletResponse) lanza Exception { String filePath = getMyParamPlus (solicitud, "filePath", ""); String userAgent = request.getHeader ("Usuario-Agente"); String fileName = ""; int start = filePath.lastIndexOf ("/"); if (start! = -1) { fileName = filePath.substring (start + 1); } StringBuffer localStringBuffer = new StringBuffer (50); FileInputStream localFileInputStream = nulo; BufferedOutputStream localBufferedOutputStream = nulo;
Archivo localFile1 = nuevo archivo (filePath);
if ((localFile1! = null) && (localFile1.exists ())
&& (localFile1.isFile ())) { long l = localFile1.length (); intente { localFileInputStream = new FileInputStream (localFile1); respuesta.reset (); response.setContentType ("aplicación / secuencia de octetos"); response.setContentLength ((int) l); // 针对 IE 或者 以 IE 为 内核 的 浏览 器 : if (userAgent.contains ("MSIE") || userAgent.contains ("Trident")) { fileName = java.net.URLEncoder.encode (fileName, "UTF- 8 ");
// 非 IE 浏览 器 的 处理 :
fileName = new String (fileName.getBytes ("UTF-8"), "ISO-8859-1");
}
response.setHeader ("Content-Disposition", "adjunto; filename =" + nueva cadena (fileName.getBytes ("utf-8"), "ISO-8859-1"));
localBufferedOutputStream = nuevo BufferedOutputStream (response.getOutputStream ());
intente { byte [] arrayOfByte1 = nuevo byte [2048]; int i; while ((i = localFileInputStream.read (arrayOfByte1))> 0) { localBufferedOutputStream.write (arrayOfByte1, 0, i); }
localBufferedOutputStream.flush ();
} catch (Exception localException2) { } localBufferedOutputStream.close (); localFileInputStream.close (); } catch (Exception localException3) {
}
}
try { if (localBufferedOutputStream! = null) { localBufferedOutputStream.flush (); localBufferedOutputStream.close (); } if (localFileInputStream! = null) { localFileInputStream.close (); } } catch (Exception localException1) { } return null; }