bragadocio | bonjour,
Code :
- /**
- * Classe implémentant l'interface <code>javax.activation.DataSource</code>
- * pour des objets du type <code>javax.servlet.http.HttpServletRequest</code>.
- * <p>Cet objet permet d'initialiser l'analyseur MIME
- * <code>javax.mail.internet.MimeMultipart</code> de l'API JavaMail.
- * L'intérêt est de pouvoir récupérer des fichiers uploadés dans une requête HTTP POST,
- * ce qui est malheureusement impossible avec l'API Servlet.</p>
- * <p>On peut alors écrire quelque chose comme ça :<pre>
- * HttpRequestDataSource ds = new HttpRequestDataSource(request);
- * MimeMultipart mp = new MimeMultipart(ds);
- * MimeBodyPart bp = (MimeBodyPart) mp.getBodyPart(0);</pre></p>
- */
- public class HttpRequestDataSource implements DataSource{
- /**
- * Référence sur la requête.
- */
- private HttpServletRequest request;
- /**
- * Constructeur standard.
- */
- public HttpRequestDataSource(HttpServletRequest request) {
- this.request = request;
- }
- /**
- * Retourne un <code>InputStream</code> sur la requête.
- * Cela permet de lire les données de la requête.
- * @return un <code>InputStream</code>
- */
- public InputStream getInputStream() throws IOException {
- if (request == null)
- return null;
- return request.getInputStream();
- }
- /**
- * Retourne un <code>OutputStream</code> sur la requête.
- * Mais comme il ne peut pas y en avoir, cette méthode se
- * contente de renvoyer <code>null</code>.
- * @return <code>null</code>
- */
- public OutputStream getOutputStream() throws IOException {
- return null;
- }
- /**
- * Retourne le <code>Content-Type</code> de la requête.
- * @return la valeur du paramètre <code>Content-Type</code>
- */
- public String getContentType() {
- if (request == null)
- return null;
- return request.getContentType();
- }
- /**
- * Retourne un nom pour l'objet.
- * @return la chaîne <code>"HttpRequest"</code>
- */
- public String getName() {
- return "HttpRequest";
- }
- }
|
et dans ta servlet:
Code :
- HttpRequestDataSource ds = new HttpRequestDataSource(request);
- Log.trace("DeclarationServlet","doPost()","dataSource des fichiers importer = ok" );
- MimeMultipart mp = new MimeMultipart(ds);
- Log.trace("DeclarationServlet","doPost() ","MimeMultipart = ok" );
- MimeBodyPart bp;
- Log.trace("DeclarationServlet","doPost()","MimeMultipart.getCount() = "+mp.getCount());
- for (int i=0; i<mp.getCount(); i++) {
- bp = (MimeBodyPart) mp.getBodyPart(i);
- if (bp.getFileName() != null) {
- Log.trace("DeclarationServlet","doPost()"," file N° "+i+" = "+bp.getFileName() );
- BufferedReader fichier = null;
- if (bp.getContent() instanceof String) {
- Log.trace("DeclarationServlet","doPost()"," file N°"+i+" est un fichier text " );
- fichier = new BufferedReader( new StringReader((String) bp.getContent()) );
|
dans ta jsp:
Code :
- <form name="importation" onSubmit="return controlXML();" enctype="multipart/form-data" action="<%=servletPath%>/ImportationServlet" method="post" >
|
voila ca marche et java pour tous!
salut |