Hola de nuevo, estoy programando un action que haga todo lo necesario, copio el código.
Código:
public class DescargarDocumentosErroneosAction extends RestrictionEdicionAction{
public ActionForward _execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
Criteria c = new Criteria();
List documentosErroneosL = DocumentosErroneosPeer.doSelect(c);
for(int i=0;i<=documentosErroneosL.size()-1;i++){
DocumentosErroneos doc = (DocumentosErroneos)documentosErroneosL.get(0);
String dominio = doc.getCNIG() + "_" + doc.getXDocumento_e();
//Tipo Mime del escrito, por defecto application/octet-stream
String sTipoMime = "application/octet-stream";
// Extensión del escrito
String sExtension = "";
sTipoMime = doc.getAdjuntoExtension_e();
//Establecemos el tipo mime de entre los posibles
if (sTipoMime.equalsIgnoreCase("doc"))
{
sTipoMime = "application/msword";
sExtension = ".doc";
}
else if (sTipoMime.equalsIgnoreCase("rtf"))
{
sTipoMime = "application/rtf";
sExtension = ".rtf";
}
else if (sTipoMime.equalsIgnoreCase("gif"))
{
sTipoMime = "image/gif";
sExtension = ".gif";
}
else if (sTipoMime.equalsIgnoreCase("pdf"))
{
sTipoMime = "application/pdf";
sExtension = ".pdf";
}
else if ( sTipoMime.equalsIgnoreCase("tif") || sTipoMime.equalsIgnoreCase("tiff"))
{
sTipoMime = "image/tiff";
sExtension = ".tif";
}
else if ( sTipoMime.equalsIgnoreCase("jpg") || sTipoMime.equalsIgnoreCase("jpeg"))
{
sTipoMime = "image/jpg";
sExtension = ".jpg";
}
else
{
sTipoMime = "application/octet-stream";
sExtension = "."+ sTipoMime;
}
response.setHeader("Content-Disposition","inline;filename=Documentación "+ dominio+ sExtension);
response.setContentType(sTipoMime);
ServletOutputStream sos = response.getOutputStream();
java.io.BufferedOutputStream bos = new java.io.BufferedOutputStream(sos);
bos.write(doc.getTAdjunto_e());
bos.flush();
bos.close();
}
return mapping.findForward("ok");
}
}
Hasta ahora la clase saca los blob de la BD y los descarga, el problema es que solo me descarga el primer archivo y al final me lanza este error:
java.lang.IllegalStateException: No puedo reenviar después de que la respuesta se haya llevado a cabo.
Creo que puede ser no se puede hacer mas de un response.getOutputStream() por petición.
Necesito sacarlos todos porque tengo que comprimirlos para su descarga.
Alguna ayudita??
Gracias!