Question

Nous utilisons tomcat et générons des fichiers pdf à la volée. Je n'ai pas la taille du fichier d'avance, je ne peux donc pas me connecter directement à un fichier sur le serveur. J'envoie donc directement la sortie.

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

Et puis je produis directement sur ce OutputStream.

Le seul problème est que le récepteur ne reçoit pas la taille du fichier, il ne sait donc pas combien de temps le téléchargement prendra. Existe-t-il un moyen de dire à la réponse quelle est la taille du fichier?

MODIFIER   Je connais la taille du fichier, je ne peux pas dire au STREAM quelle est la taille du fichier.

Était-ce utile?

La solution

L'objet de réponse doit avoir méthode setContentLength :

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

Autres conseils

Sérialisez le flux d'octets PDF dans un fichier ou, dans un tableau d'octets, calculez sa taille, définissez-la et écrivez-le dans le flux de sortie.

Je crois que vous répondez vous-même à la question: citation: Je n'ai pas la taille du fichier d'avance, alors j'envoie directement la sortie.

Si vous n'avez pas la taille voulue, vous ne pouvez pas l'envoyer ....

Pourquoi ne pas générer le fichier PDF dans un système de fichiers temporaire, un système de fichiers ram-base ou un fichier de mappage mémoire à la volée. alors vous pouvez obtenir la taille du fichier.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top