tamanho do arquivo de download jsp
Pergunta
Estamos executando tomcat, e estamos gerando arquivos PDF na mosca. Eu não tenho o tamanho do arquivo antes da mão, então eu não pode ligar direcly para um arquivo no servidor. Então eu enviar diretamente a saída.
response.setContentType("application/force-download");
OutputStream o = response.getOutputStream();
E então eu diretamente saída para esta OutputStream.
O único problema é que o receptor não recebe o tamanho do arquivo, para que eles não sei por quanto tempo o download vai demorar. Existe uma maneira de dizer a resposta quão grande o arquivo é?
Editar Eu sei o tamanho do arquivo, eu só não posso dizer o STREAM quão grande é o arquivo.
Solução
O objeto de resposta deve ter um setContentLength método:
// Assumes response is a ServletResponse
response.setContentLength(sizeHere);
Outras dicas
Serialize o fluxo PDF byte em um arquivo ou em um array de bytes calcular seu tamanho, definir o tamanho e escrevê-lo para o fluxo de saída.
Eu acredito que você está respondendo a pergunta a si mesmo: citar: Eu não tenho o tamanho do arquivo antes da mão, então eu enviar diretamente a saída.
Se você não tem o tamanho você não pode enviá-lo ....
Por que não gerar o arquivo PDF no sistema de arquivo temporário, ou sistema de arquivos ram-base ou arquivo de memória de mapa na mosca. então você pode obter o tamanho do arquivo.
response.setContentType ( "application / força-download"); response.setContentLength (sizeHere); OutputStream o = response.getOutputStream ();