Domanda

Stiamo eseguendo Tomcat e stiamo generando file pdf al volo. Non ho prima le dimensioni del file, quindi non posso collegarmi direttamente a un file sul server. Quindi invio direttamente l'output.

response.setContentType("application/force-download");
OutputStream o = response.getOutputStream();

E poi ho prodotto direttamente questo OutputStream.

L'unico problema è che il destinatario non ottiene la dimensione del file, quindi non sanno quanto tempo impiegherà il download. C'è un modo per dire alla risposta quanto è grande il file?

Modifica   Conosco la dimensione del file, non posso dire allo STREAM quanto è grande il file.

È stato utile?

Soluzione

L'oggetto risposta dovrebbe avere un setContentLength :

// Assumes response is a ServletResponse
response.setContentLength(sizeHere);

Altri suggerimenti

Serializza il flusso di byte PDF in un file o in un array di byte calcola la sua dimensione, imposta la dimensione e scrivila nel flusso di output.

Credo che tu stia rispondendo alla domanda tu stesso: citazione: Non ho prima le dimensioni del file, quindi invio direttamente l'output.

Se non hai le dimensioni non puoi inviarlo ....

Perché non generare il file PDF nel file system temporaneo, nel file system ram-base o nel file della mappa di memoria al volo. allora puoi ottenere la dimensione del file.

response.setContentType (" application / forza-download "); response.setContentLength (sizeHere); OutputStream o = response.getOutputStream ();

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top