Tamaño de archivo descargado 0

Estoy tratando de agregar un bean de diálogo específico para la acción en Alfresco Explorer que supuestamente debe descargar un archivo docx específico. El código funciona bien cuando presiono la acción de descarga, descarga el archivo, pero como se menciona en el título de mi pregunta, el tamaño del archivo es de 0 bytes.

Estoy usando esto para hacer eso:

public class NewFormDialog extends BaseDialogBean {

protected String aspect;

protected String finishImpl(FacesContext context, String outcome)
        throws Exception {

    download(aspect);

    // // get the space the action will apply to
    // NodeRef nodeRef = this.browseBean.getActionSpace().getNodeRef();
    //
    // // resolve the fully qualified aspect name
    // QName aspectToAdd = Repository.resolveToQName(this.aspect);
    //
    // // add the aspect to the space
    // getNodeService().addAspect(nodeRef, aspectToAdd, null);
    //
    // // return the default outcome
    return outcome;
}

public boolean getFinishButtonDisabled() {
    return false;
}

public String getFinishButtonLabel() {
    return "Download";
}

public void download(String pAspect) throws ServletException, IOException {

    String filename = pAspect;
    String filepath = "\\";
    BufferedInputStream buf = null;
    ServletOutputStream myOut = null;

    try {
        FacesContext fc = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) fc
                .getExternalContext().getResponse();

        myOut = response.getOutputStream();
        File myfile = new File(filepath + filename);

        // set response headers
        response.setContentType("application/octet-stream");

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

        response.setContentLength((int) myfile.length());

        FileInputStream input = new FileInputStream(myfile);
        buf = new BufferedInputStream(input);
        int readBytes = 0;

        // read from the file; write to the ServletOutputStream
        while ((readBytes = buf.read()) != -1)
            myOut.write(readBytes);
        myOut.flush();
        response.flushBuffer();

    } catch (IOException ioe) {

        throw new ServletException(ioe.getMessage());

    } finally {
        // close the input/output streams
        if (myOut != null)
            myOut.close();
        if (buf != null)
            buf.close();
        FacesContext.getCurrentInstance().responseComplete();
    }
}

public String getAspect() {
    return aspect;
}

public void setAspect(String aspect) {
    this.aspect = aspect;
}
}

Intenté todas las soluciones que encontré que ninguna funciona.

Gracias de antemano.

Respuesta 1

Tengo un Mapa Mapa <Entero, Lista> con clave, valores. Necesito convertir esto en Lista y pasarlo a la función de llamada. Una vez que tenga la lista, necesito volver a convertirla en Mapa <Entero, Lista y ...

¿Podría explicarme la idea detrás de las opciones de sendBufferSize recibirBufferSize que se usan junto con bootstrap: bootstrap.setOption ("sendBufferSize", 1048576); bootstrap.setOption ("...

Cambié algunos proyectos Java de una PC con Windows a Ubuntu exportándolos 'a través del almacenamiento de archivos', es decir, un archivo zip, e importándolos con el mismo método. Cuando lo estaba importando de nuevo a Eclipse, ...

He implementado servicios web en mi aplicación. Cuando quiero enviar un objeto a mi servidor a través de servicios web a través de SOA con la interfaz de usuario de Soap, obtengo algo como esto: <soapenv: Envelope xmlns: soapenv = "...