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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Effacer des fichiers temporaires


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 74
    Par défaut Effacer des fichiers temporaires
    Bonjour,

    Je génère via une servlet une page web qui contient des images. J'aimerai une fois que celle-ci (la page avec toutes ses images) est fini de charger, supprimer toutes les images temporaires.
    est-ce possible et si oui comment ?
    Merci pour vos réponses.

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Salut!

    Tu as deux approches possibles à mon sens si tu as des images temporaires générées. Dans tous les cas, il ne faut pas que tes images soient générées en fichier, parce que tu ne sauras jamais quand tu peux les supprimer (ton code serveur est déclenché par les appels client, rien de plus).
    1) Les images sont générées directement dans le html (voir par exemple http://www.elf.org/essay/inline-image.html). Mais cela pose pas mal de problèmes de compatibilité avec IE, de lenteur etc ...
    2) Les images sont elles mêmes générées par des servlets. En effet, une servlet peut très bien générer n'importe quel type de contenu, pas seulement du html ...

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 74
    Par défaut
    Merci chtig pour ta réponse rapide.

    En fait j'ai une servlet qui fait appel à BIRT qui est un moteur de génération de rapport et c'est lui qui me génère des images qu'il stocke dans le repertoire que je lui ai indiqué. Est-ce cette manière de procéder que tu appelles "générer des images via la servlet" ? si oui, ce que j'aimerais fiare, c'est qu'une fois que tout est chargé, aller vider le fameux repertoire où ils stockent ses fichiers temporaires (il n'y a pas que des images d'ailleurs...).

    P.S : Le lien que tu m'as donné semble ne pas fonctionner

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Etrange, le lien fonctionne pour moi ...
    Je ne savais pas que tu utilisais un moteur de génération de rapport. Dans ce cas, c'est légèrement différent. Il faut que tu fasses une servlet qui appele le rapport, lit le fichier en mémoire, efface le rapport, et envoi le contenu de la mémoire dans la réponse en content/type adéquat.

    Je ne suis pas sûr d'être clair. Prenons un exemple :
    - J'ai une servlet HtmlGenerator qui est mappée sur l'url /html
    - J'ai une servlet ImageGenerator qui est mappée sur l'url /image

    lorsque le navigateur appelle l'url /html?dateDebut=01012008&dateFin=01012009, il reçoit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <html>
    <body>
    <img src="/image?dateDebut=01012008&dateFin=01012009">
    </body>
    </html>
    Il appelle alors l'url /image?dateDebut=01012008&dateFin=01012009 qui est elle même une servlet qui :
    - Génère l'image en fichier avec BIRT
    - Met le content/type de la réponse à ce qu'il faut
    - Lit le fichier et écrit son contenu dans la réponse
    - Supprime le fichier

    C'est plus clair ?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 74
    Par défaut
    Chtig,

    Je débute en Servlet, donc en gros j'ai cette méthode DoGet extraite de la Servlet BirtServlet qui appelle ci-dessous une autre Servlet Editionv2. C'est cette dernière qui génère mon rapport et qui crée donc mes fameux fichiers temporaires.
    Par rapport à ce que tu m'as indiqué, j'ai l'impression de ne pas être loin de ce que tu me proposes, mais néanmoins je bloque pour la suppression des fichiers temporaires.

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//Store the report to generate
    		String rptdesignFile = request.getParameter("__report");
    		//Store the generation format
    		String outputFormat = request.getParameter("outputFormat");
    		//Store the mode of generation
    		String genMode = request.getParameter("genMode");	
     
    		String reportPath = new String();	
    		String imageDirectory = new String();	
    		String birtReportEngine = new String();
     
    		try {
    			ConfXML settingParamatersconf = new ConfXML();
    			//Store the report directory path (where all rptdesign files arestored)
    			reportPath = settingParamatersconf.getTagValue("reports-path-directory");
    			imageDirectory = settingParamatersconf.getTagValue("image-directory");
    			birtReportEngine = settingParamatersconf.getTagValue("report-engine");
    			System.out.println("reportPath = "+reportPath);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		// Get the values set by the application for all parameters.
    		HashMap myParametersList = new HashMap();
    		// Store parameters values depending on reports
    		if (rptdesignFile.equals("priority_by_status.rptdesign")){
    			myParametersList.put("niveau_criticite", request.getParameter("niveau_criticite"));
    			myParametersList.put("issue_type", request.getParameter("issue_type"));
    		}
     
    		Editionv2 genrationRapport = new Editionv2();
    		//Initialization of Editionv2 instance
    		genrationRapport.initEdition(birtReportEngine,
    										reportPath+rptdesignFile,
    										myParametersList,
    										outputFormat,
    										(reportPath+rptdesignFile).replaceFirst( ".rptdesign", "."+outputFormat.toLowerCase()),
    										genMode,
    										imageDirectory,
    										request.getContextPath() );
     
    		//Generate
    		genrationRapport.run();
     
     
    		//set the appropriate MIME type according to the output format
    		if (outputFormat.equals("HTML") || genMode.equals("DEP")){
    			response.setContentType("text/html");
    		} else if ( outputFormat.equals("PDF")) {
    			response.setContentType("application/pdf");
    		} else if ( outputFormat.equals("XLS")) {
    			response.setContentType("application/vnd.ms-excel");
    			//response.setHeader("Content-disposition","inline; filename=nombre.csv");
    		} else if ( outputFormat.equals("DOC")) {
    			response.setContentType("application/msword");
    		} else {
    			response.setContentType("text/html");
    		}
     
    		response.setHeader("Cache-Control","must-revalidate");
     
    		if (genMode.equals("AFF")) {
    			//Get the output stream of the servlet
    			OutputStream outputStreamServlet = response.getOutputStream();
    			//Copy stream generating by the report into the output stream of the servlet
    			((ByteArrayOutputStream) genrationRapport.getOptions().getOutputStream()).writeTo(outputStreamServlet);
    			//Close the stream
    			outputStreamServlet.close();
    		}
    	}
    Partir de la méthode qui fait appel à la Servlet de génération de rapport :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Editionv2 genrationRapport = new Editionv2();
    		//Initialization of Editionv2 instance
    		genrationRapport.initEdition(birtReportEngine,
    										reportPath+rptdesignFile,
    										myParametersList,
    										outputFormat,
    										(reportPath+rptdesignFile).replaceFirst( ".rptdesign", "."+outputFormat.toLowerCase()),
    										genMode,
    										imageDirectory,
    										request.getContextPath() );
     
    		//Generate
    		genrationRapport.run();

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ta servlet est en effet capable de générer le rapport selon plusieurs formats. Quel format utilises-tu actuellement ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Effacer des fichiers au démarrage de Tomcat?
    Par locuelas dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 11/06/2007, 18h02
  2. Win 2000 Server : Nettoyage du server des fichiers temporaires.
    Par snoopy69 dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 12/10/2006, 07h41
  3. Suppression des fichiers temporaires (TMP)
    Par alainn dans le forum Access
    Réponses: 1
    Dernier message: 17/06/2006, 10h01
  4. Y as il des fichiers temporaires sous builder
    Par Moutonstar dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/12/2004, 14h24
  5. Comment changer le répertoire des fichiers temporaires ?
    Par devdev dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 01/09/2004, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo