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.

Foi útil?

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 ();

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top