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

Développement Web en Java Discussion :

Stockage d'images sur le serveur


Sujet :

Développement Web en Java

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut Stockage d'images sur le serveur
    Salut j'ai codé un formulaire d'upload d'images, je stock ces images dans un endroit du serveur (/home/datas/lesite.com/photos/) puis avec le tomcat-manager j'ai créé une application DATAS avec comme chemin /home/datas, comme ça je peux acceder a mes image(pour les afficher) via ./../DATAS/photo/1.jpg
    Seulement cette solution ne me convient pas car c'est assez aléatoire, un coup il trouve pas l'image, l'autre coup il met une image mais c'est pas la bonne (style l'ancienne ayant eu le même nom).
    J'ai cherché sur google un autre système pour stocker mes images mais je n'ai rien trouvé, que me conseillez vous?
    Merci

  2. #2
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    Salut finalement j'affiche mes image avec une servlet, le probleme c'est que lorsqu'il y a plusieurs image cela ne me les affiche pas tous (souvent la dernière dans le code HTML), est-il possible qu'il y ait des conflits? voici le source de ma servlet DisplayPhoto.java

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    package servlets;
     
    import classes.Datas;
    import classes.Objet;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    /**
     *
     * @author pj
     */
    public class DisplayPhoto extends HttpServlet {
        private String idPhoto;
        private Objet obj;
        private String extension;
     
        /** 
         * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            //response.setContentType("text/html;charset=UTF-8");
            //PrintWriter out = response.getWriter();
            try {
                //out.print("photo");
                /* TODO output your page here
                out.println("<html>");
                out.println("<head>");
                out.println("<title>Servlet DisplayPhoto</title>");  
                out.println("</head>");
                out.println("<body>");
                out.println("<h1>Servlet DisplayPhoto at " + request.getContextPath () + "</h1>");
                out.println("</body>");
                out.println("</html>");
                */
            } finally { 
                //out.close();
            }
        } 
     
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /** 
         * Handles the HTTP <code>GET</code> method.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            if(request.getParameter("id")==null)
                processRequest(request, response);
            else
            {
                String mini;
                if(request.getParameter("mini")==null)
                    mini="";
                else
                    mini="mini"+request.getParameter("mini");
                try {
                    this.idPhoto = request.getParameter("id");
                    this.obj = new Objet();
                    obj.connect();
                    String query = "SELECT extension FROM table_photos WHERE id=?";
                    PreparedStatement prepare = obj.getConnect().prepareStatement(query);
                    prepare.setInt(1, Integer.parseInt(this.idPhoto));
                    ResultSet result=prepare.executeQuery();
                    result.next();
                    String filename=mini+this.idPhoto.toString()+result.getString("extension");
                    result.close();
                    prepare.close();
                    String vraiFichier=Datas.uploadDir+"photos/"+filename;
                    File file=new File(vraiFichier);
                    this.extension=(vraiFichier.substring(vraiFichier.lastIndexOf("."))).toLowerCase();
                    this.extension=this.extension.substring(1);
                    BufferedImage buffer = ImageIO.read(file);
                    String format;
                    if(extension.equals("jpg"))
                    {
                        response.setContentType("image/jpeg");
                        format="JPEG";
                    }
                    else
                    {
                        response.setContentType("image/"+extension);
                        format=extension.toUpperCase();
                    }
                    OutputStream os = response.getOutputStream();
                    ImageIO.write(buffer, format, os);
                    os.close();
                } catch (SQLException ex) {
                    Logger.getLogger(DisplayPhoto.class.getName()).log(Level.SEVERE, null, ex);
                   processRequest(request, response);
                }
            }
        } 
     
        /** 
         * Handles the HTTP <code>POST</code> method.
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse  response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
     
        /** 
         * Returns a short description of the servlet.
         * @return a String containing servlet description
         */
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    voici comment je l'appelle via des balises img :
    <img alt="photo"  src="DisplayPhoto?id=1&mini=2" width="133" height="100"/>
    <img alt="photo"  src="DisplayPhoto?id=2&mini=2" width="135" height="100"/>
     <img alt="photo"  src="DisplayPhoto?id=3&mini=2" width="307" height="100"/>
     <img alt="photo"  src="DisplayPhoto?id=4&mini=2" width="100" height="100"/>
    Merci de votre aide
    Tcho

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    retire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class DisplayPhoto extends HttpServlet {
        private String idPhoto;
        private Objet obj;
        private String extension;
    Tu ne dois pas stocker de données spécifiques à la requete dans les attributs de ton instance, ces attributs sont les mêmes pour toutes les requetes en parallèle! Il n'y a qu'une seule instance de ta servlet, et plusieurs appels en parallèle sur ta methode processRequest, ce qui amène inévitablement des conflits dans ton cas.

  4. #4
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    Janvier 2009
    Messages
    1 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : Janvier 2009
    Messages : 1 015
    Points : 407
    Points
    407
    Billets dans le blog
    1
    Par défaut
    merci tchize, je ne savais pas que la servlet n'était instanciée qu'une seule fois, je ne comprend pas trop pourquoi en fait , mais bon ça marche :-)

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par stc074 Voir le message
    merci tchize, je ne savais pas que la servlet n'était instanciée qu'une seule fois, je ne comprend pas trop pourquoi en fait , mais bon ça marche :-)
    pour n'être initialisées qu'une seul fois, pour éviter des instanciations inutiles.

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

Discussions similaires

  1. Chemin de stockage image sur un serveur
    Par steveoo61 dans le forum Java EE
    Réponses: 14
    Dernier message: 10/01/2015, 03h29
  2. uploader une image sur le serveur
    Par kespy13 dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 20h01
  3. [Image]Stockage d'une image sur un serveur
    Par zoby43 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 23/03/2006, 11h42
  4. [PHP-JS] charger plusieurs images sur le serveur
    Par ehmppowa dans le forum Langage
    Réponses: 4
    Dernier message: 13/12/2005, 16h22
  5. Enregistrement d'une image sur le serveur
    Par MHI dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2005, 15h25

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