Bonjour,

J'ai commencé à travailler sur une servlet permettant d'uploader des images sur le serveur (ce qui fonctionne).
Par contre, j'essaye d'afficher cette image après l'avoir enregistrée et quelques fois ce traitement se déroule avant la fin de l'enregistrement. Cela signifie que je rentre dans mon doGet avant d'avoir exécuté complètement mon doPost... et ne sais pas comment résoudre le problème.

J'ai bidouillé la méthode doGet pour la relancer si l'image n'était pas totalement chargée mais cela reste une solution temporaire.

Code html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<div id="div_ajax_galerie" class="ajax_bloc">
		<iframe id="frame_galerie_chien" name="frame_galerie_chien" height="0" width="0" frameborder="0" scrolling="yes"></iframe>
	   	<form id="form_galerie_chien" enctype="multipart/form-data" method="post" target="frame_galerie_chien" action="uploadFile.html" onsubmit="ajax.loadUrl('uploadFile.html?idAjax=valider1', new Array('txtFile'));">
	   		<input type="file" name="txtFile" id="txtFile" /><br />
	   		<input type="submit" id="submitID" name="submit" value="Charger" />
	   	</form>	
   	</div>
Code doGet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 protected void doGet(HttpServletRequest _request, HttpServletResponse _response) throws ServletException, IOException {
               PrintWriter printWriter = _response.getWriter();
               HashMap<String, String> map = Fonction.requestParamToHashMap(_request);
               
               try{
                       if (_request.getSession() != null) {
                               // Récupére l'objet UploadFileListener contenu dans la session
                               UploadFileListener listener = (UploadFileListener)_request.getSession().getAttribute(Constante.SESSION_LISTENER);
       
                               String attribut = map.get("file_chien_0");
                               attribut = (attribut == null) ? map.get("file_chien_1") : attribut;
                               
                               if(!Fonction.isNull(attribut)){
                                       // Si l'image est chargée complètement sur le serveur alors l'afficher
                                       if (listener != null && listener.getBytesRead() == listener.getContentLength()) {
                                               _request.getSession().setAttribute(Constante.SESSION_LISTENER, null);
                                               
                                               // Afficher l'image
                                               String src = _request.getContextPath() + "/" + PATH + attribut;
                                               Image image = new Image(Constante.IMG_WIDTH, Constante.IMG_HEIGHT, src);
                                               printWriter.println(Constante.DIV_AJAX_BLOC + "#" + ImageImpl.genererHtml(image)); //$NON-NLS-1$
                                       }else{
                                               doGet(_request, _response);
                                       }
                               }
                       }
               }catch (Exception e) {
                       e.printStackTrace();
                       Message message = new Message(Messages.getString("Exception.generique"), Constante.MSG_ERREUR); //$NON-NLS-1$
                       printWriter.println(Constante.DIV_AJAX_MESSAGE + "#" + MessageImpl.genererHtml(message)); //$NON-NLS-1$
               }
       }
Code doPost :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
protected void doPost(HttpServletRequest _request, HttpServletResponse _response) throws ServletException, IOException {
               ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
               FileItem fileItem = null;
               UploadFileListener listener = new UploadFileListener();
 
               // Ajouter le listener à la session
               _request.getSession().setAttribute(Constante.SESSION_LISTENER, listener);
 
            // Associer le listener Apache aux fichiers
            upload.setProgressListener(listener);
 
               try {
                       if(ServletFileUpload.isMultipartContent(_request)){
                               List<FileItem> uploadedItems = upload.parseRequest(_request);
                               Iterator<FileItem> i = uploadedItems.iterator();
 
                               // Parcourir tous les fichiers à uploader
                               while (i.hasNext()){
                                       fileItem = (FileItem) i.next();
 
                                       if (fileItem.isFormField() == false) {
                                               if (fileItem.getSize() > 0) {
                                                       // Créer le nouveau fichier
                                                       File uploadedFile = new File(getServletContext().getRealPath(PATH), fileItem.getName());
 
                                                       // Enregistrer le fichier sur le serveur
                                                       fileItem.write(uploadedFile);
                                               }
                                       }
                               }
                       }
               } catch (FileUploadException e) {
                       e.printStackTrace();
               } catch (Exception e) {
                       e.printStackTrace();
               }      
       }
Un grand merci pour votre aide.