J'ai une sorcière de servlet génère un fichier .xls
et il est d'envoyer le fichier généré à l'utilisateur pour télécharger le code ci-dessous:question réponse servlet étrange
// Write the output to a file
Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter=
new SimpleDateFormat("yyyy_MMM_dd");
String dateNow = formatter.format(currentDate.getTime());
String path = "webapps/myapp/exports/";
String fileName = ("Table_export_"+ dateNow + ".xls");
FileOutputStream fileOut = new FileOutputStream(path+fileName);
wb.write(fileOut);
fileOut.close();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment;filename="+fileName);
Le fichier est enregistré sur le serveur avec un taille de 5 Ko, mais après la boîte de dialogue du navigateur et après avoir choisi enregistrer ou ouvrir, le fichier est vide et la taille est de 0 kb. Je ne peux pas comprendre ce qui ne va pas.
Je me bats avec ce problème pendant environ 2 heures sans succès. J'ai essayé de définir le chemin complet:
response.setHeader("Content-Disposition","attachment;filename="path+fileName);
Mais je suis arrivé un document avec un nom étrange et il était aussi 0 kb. Je suis assez sûr qu'il me manque quelque chose de vraiment petit, mais en tant que développeur junior, je ne peux toujours pas comprendre.
Vous essayez d'envoyer le fichier dans la réponse HTTP ou quoi? Désolé je ne peux pas comprendre votre code. – Rafa
oui, c'est ce que j'essaie de faire. – Slim
Mais vous enregistrez le fichier dans le système de fichiers à la place! Si vous voulez envoyer un fichier via HTTP, vous devez écrire des octets dans 'OutputStream' que vous obtenez à partir de la réponse HTTP. – AlexR