Link de Download JSF, com problemas!

1 resposta
rbroz85

Boa tarde amigos,

estou uma duvida bem batida já…
ok vamos la!

seguinte, tenho um commandButton que chama um download la no mey Bean… funciona de boa ! mas quando eu clico em qualquer outro botao( que nao pe download)
o download anterior continua aparecendo pra eu baixar de novo!
ou seja… quando eu clico pra fazer o download, e vou para uma outra pagina… o download aparece, dai clico em cancelar… e continuo navegando… e deposi aparece dinovo!
parece que ele ficou no header da pagina… seila… como posso resolver isso ??

estou fazendo assim:

<h:commandButton value="Download" action="#{Filebean.downloadFile}" immediate="true"/>
public String downloadFile(){
        FileInputStream fis;
        byte[] fileBlob;
        int fileLength = 0;
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest req = (HttpServletRequest) facesContext.getExternalContext().getRequest();
        DataTableArquivo dta = (DataTableArquivo) req.getAttribute("dta");
        try {
            File f = getRealFile(dta.getArquivo());
            fis = new FileInputStream(f);
            fileLength = (int) f.length() + 1;
            fileBlob = new byte[fileLength];
            fis.read(fileBlob);
            fis.close();
            writeBytes(fileBlob, f.getName());
        } catch (IOException ex) {
            Logger.getLogger(Filebean.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "";
    }


    private void writeBytes(byte[] bytes,String fileName){
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();

        if (bytes != null && bytes.length > 0) {
            ServletOutputStream ouputStream = null;
            try {
                response.setContentType("application/force-download");
                response.setHeader("Content-disposition", "attachment;filename="+fileName);

                response.setContentLength(bytes.length);
                ouputStream = response.getOutputStream();
                ouputStream.write(bytes, 0, bytes.length);
                ouputStream.flush();
                ouputStream.close();
                facesContext.responseComplete();

            } catch (IOException ex) {
                ex.printStackTrace();
            }
         }
    }

obrigado desde ja

1 Resposta

rbroz85

bom dia amigos,

ainda estou com problemas nesse assunto

já tentei todos os modos pra fazer o arquivo carregar na pagina sem dar problemas e nada…

o download aparece! e baixa o arquivo.

porem ele continua no cache da pagina ! e quando clico em outro link… ele aparece dinovo pra ser baixado !..
como resolvo isso ?

abraços

Criado 22 de outubro de 2009
Ultima resposta 23 de out. de 2009
Respostas 1
Participantes 1