IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)



Comment uploader un fichier vers un serveur avec Struts ?
auteur : Lionel Roux (aka RanDomX)
Il faut déclarer un formulaire d'envoi du fichier dans la JSP:

<html:form action="/upload.do?from=sender" method="post" enctype="multipart/form-data"> <html:file property="fichier"/> ... </html:form>
Ensuite, il faut créer un bean que l'on nommera pour l'exemple "UploadForm" :

public class UploadActionForm extends ActionForm { protected FormFile file; public FormFile getFile() { return file; } public void setFile(FormFile file) { this.file = file; } ... }
Il faut créer aussi dans l'Action idoine "UploadAction" contenant :

{ ... UploadActionForm theForm = (UploadActionForm) actionForm; FormFile file = theForm.getFichier(); ... }
Voila, vous avez votre objet implémentant FormFile [org.apache.struts.upload] , que vous pouvez manipuler sur le serveur.


Comment envoyer au client un fichier avec Struts ?
auteur : Lionel Roux (aka RanDomX)
Dans l'action il faut récupérer le nom du fichier a envoyer (filename).
Ensuite il faut ouvrir le stream de l'objet response et y envoyer le flux de données correspondant au fichier comme ceci:

response.setContentType("multipart/zip"); response.setHeader("Content-Disposition", "attachment; filename=\"" + filename.trim().substring(1,filename.length()) + "\";"); response.setContentLength((int)f.length()); try { OutputStream os = response.getOutputStream(); FileInputStream stream = new FileInputStream(f); BufferedInputStream bis = new BufferedInputStream(stream); InputStream is = new BufferedInputStream(bis); int count; byte buf[] = new byte[4096]; while ((count = is.read(buf)) > -1) { os.write(buf, 0, count); } is.close(); os.close(); } catch (Exception ex) { ex.printStackTrace(); } .. return mapping.findforward("fichieenvoye");
Ceci provoque l'ouverture d'une boîte de dialogue vous invitant à enregistrer localement le fichier, et vous redirige vers la ressource correpondant au mapping "fichieenvoye".


Comment ouvrir un fichier dans le navigateur avec Struts?
auteur : Lionel Roux (aka RanDomX)
Prenons l'exemple d'un fichier PDF.
Dans le mapping (par exemple) on a :

<html:link page="/openpdf.do" name="pdfForm" property="pdfName" target="_blank"> <html:img src="./images/PDF.gif" border="0" alt="View PDF"/> </html:link>
Dans la méthode execute de l'Action :

ByteArrayOutputStream bos = new ByteArrayOutputStream(5000); // Remplir ici votre bos avec le flux du PDF httpServletResponse.setContentType("application/pdf"); httpServletResponse.setContentLength(bos.size()); OutputStream os = httpServletResponse.getOutputStream(); os.write(bos.toByteArray(), 0, bos.size()); os.flush(); os.close(); return null;
Le fichier PDF s'ouvre alors dans le navigateur.