Je veux donner le téléchargement de fichier à l'aide de Java, Struts2 et Ajax. P>
sur ma page HTML Il y a un bouton appelé "Exporter" en cliquant sur quel appel Ajax sera effectué qui exécutera une requête et créera un fichier .xls à l'aide du code et je souhaite donner ce fichier à télécharger à l'utilisateur sans le stocker sans le stocker. sur le disque dur. P>
Quelqu'un peut-il savoir comment faire cela en utilisant Struts2 et Ajax en Java? P>
Y a-t-il un exemple disponible? P>
Faites-moi savoir si vous avez besoin de plus de détails de ma part ... p>
merci. p>
amar4kintu p>
6 Réponses :
Vous n'avez pas à utiliser Ajax dans ce cas. Ayez simplement votre bouton Soumettre le formulaire à votre action de Struts et utiliser l'action utilise le Résultat du flux type.
Exemple: p>
dans vos jambes XML: p> Votre action fournira alors un Je présume que toute la bibliothèque utilisée pour générer les fichiers Excel ( POI ?) Peut écrire la sortie sur une sortie p> p> une manière rapide et sale de convertir ça en Un Public Inpurstream getinputtream () Code> Pour transmettre les données. P>
introuvable code>: p>
Bonjour, je mets Follwing dans ma strats.xml
Alors, tu utilisais Msie? Soit passer le nom de fichier en tant que URL Pathinfo ou utilisez un meilleur WebBrowser.
J'utilise Firefox et cela devrait me donner le fichier de téléchargement comme rapport.xls mais cela me donne à la place ExporTreport.action à télécharger. Et si je le renommerai à signaler.xls. Il montre un fichier .xls parfait que j'exporte .. Est-ce que quelqu'un peut dire ce que je manque?
Atlast, j'ai pu le résoudre comme suit ..
J'ai écrit la ligne suivante dans ma fonction de classe d'action et j'ai pu télécharger le fichier avec nom suivi est dans mon J'espère que cela aidera quelqu'un. P> merci. P> amar4kintu p> p> p> repor.xls code> au lieu de
exportrept.action code>. Je ne sais pas exactement .. pourquoi?
strats.xml code> fichier. J'ai supprimé
J'utiliserais ce type d'annotation sur la classe d'action:
@Result(name = "success", type= StreamResult.class, params = {"contentType", "application/vnd.ms-excel", "contentDisposition", "attachment; filename=report.xls"}, value = "reportFileStream" )
En suivant la question d'AMAR4Kintu concernant les fichiers enregistrés comme exporTrepor.action au lieu de reporter.xls, cela se produit dans IE si le format suivant n'est pas suivi dans votre fichier Strubs.xml:
<result name="download" type="stream"> <param name="contentDisposition">attachment;filename="${flashcardSetBean.title}.xlsx"</param> <param name="contentType">application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</param> <param name="inputName">inputStream</param> <param name="bufferSize">1024</param> </result>
Juste pour votre référence, nous pouvons faire la même chose à l'aide d'Annotation:
public class MyAction { private InputStream fileInputStream; private String logoName; @Action(value="/downloadLogo", results={ @Result(name="success", type="stream", params = { "contentType", "application/image/gif", "inputName", "fileInputStream", "contentDisposition", "filename=\"${logoName}\"", "bufferSize", "1024" }) } ) public String downloadLogo() throws Exception { logoName = "test.jpg"; fileInputStream = new FileInputStream(new File("DirePath", logoName)); } }
Une meilleure approche de la conduite supérieure à une intrigue est expliquée ci-dessous par opposition à la Réponse de Zoogiezor au-dessus
InputStream is = new PipedInputStream(); PipedOutputStream out = new PipedOutputStream((PipedInputStream) is); wb.write(out);