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 :

Upload d'une image a partir d'une servlet


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut Upload d'une image a partir d'une servlet
    Bonjour tout le monde,

    Dans le cadre de mon projet, j'aimerais proposer a un utilisateur de choisir une image a partir d'un explorateur qui serait ensuite copié sur le serveur. J'ai cru comprendre qu'il fallait que j'utilise l'upload. J'ai donc fais un <input type="file" name="image" /> dans ma JSP ensuite je vois pas trop quoi faire dans ma servlet.

    Si quelqu'un a un exemple assez concret avec des explications claires car tout ce que j'ai trouvé ne l'etais pas sur le web.

    Merci beaucoup

  2. #2
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    J'utilise l'api commons FileUpload ici

    pour le formulaire c'est bien un input type="file"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="formulaire" method="post" enctype="multipart/form-data" >

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    Aurais tu un exemple concret et indiquer s'il y a des jar a télécharger ou autre ?

    Merci

  4. #4
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Tu as tout ce qu'il te faut sur le site : exemple et jar à télécharger.

    et de nombre sujet qui traite de cet api sur ce forum.

  5. #5
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    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
     
    String userRoot = conf.getString("xerox_root_path");
     
    File savedFileInFileAttente = null;
    String sourceFileName ="";
    /*
     * Debut de l'upload du fichier
     */
    int sizeMax = Integer.parseInt(conf.getString("maxTailleUploadDocElec"));//50 Mo
     
     
     
    //On vérfie si il y a une demande d'upload de fichier dans la request
    boolean isMultipart =  ServletFileUpload.isMultipartContent(request);            
    if(isMultipart)
    {
     
    	//Create a factory for disk-based file items
    	DiskFileItemFactory factoryy = new DiskFileItemFactory();
     
                 //Ceci est optionnel,c'est juste pour éviter la saturation mémoire
    	int sizeMaxForJVM = Integer.parseInt(conf.getString("maxTailleUploadDocElecJVM")); //50Ko
    	/*taille du fichier à partir de laquelle le transfert se fait au niveau disque.*/
    	factoryy.setSizeThreshold(sizeMaxForJVM);
    	/*chemin pour l'ecriture disque si activé  Optionnel aussi par défaut c'est le répertorie temp du serveur*/
    	factoryy.setRepository(new File(conf.getString("uploadDocElecPath")));
     
    	//Create a new file upload handler
    	ServletFileUpload upload = new ServletFileUpload(factoryy);    
     
    	/* Taille maximale tolérable pour un fichier 50 Mo
    	 *  Ceci est aussi optionnel si il n'y  a pas de limite sur la taille des documents à uploader
    	*/	
    	upload.setSizeMax(sizeMax);
     
    	/*
    	 *  On liste les champs du formulaire pour différencier les champs de type imput="file" des autres champs
    	 */
    	List items = upload.parseRequest(request);	
    	Iterator iter = items.iterator();
     
    	while (iter.hasNext())
    	{
    		FileItem item = (FileItem) iter.next();
    		//on vérifie bien que ce n'est pas un champ de formulaire mais bien un fichier
    		if(!item.isFormField())
    		{
    			sourceFileName = item.getName();
    			if(item.getFieldName().equals("Nom associé à l'imput File"))
    			{
    				File fileToUpload = new File(item.getName());
    				/* chemin ou le fichier uploader sera placer*/
    				savedFileInFileAttente = new File(userRoot + "\\" + userData.getUserID() + "\\" + fileToUpload.getName());
    				item.write(savedFileInFileAttente);
    			}
    		}
    		else
    		{
    			System.out.println("Ceci n'est pas un fichier mais un champ de saisie du formulaire")
     
    		}
    	}
     
    	/*
    	 * Contrôle si le chemin du fichier n'a pas été édtier à la main Vive IE
    	 */
    	if(savedFileInFileAttente.length()==0)
    	{
    		System.out.println("erreur");
    	}
     
    }
    else
    {
    	System.out.println("Ce n'est pas un formulaire multipart");
    }

    Edit : j'ai commenté le code pour qu'il soit plus compréhensible

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Par défaut
    J'ai ajouté ce code dans ma servlet. Pour le moment il ne passe pas dans ma boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    				if(isMultipart){
    J'ai pourtant bien ajouté enctype="..." :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="/Camping2009/listeCamping" method="get" target="gestion" name="formulaire" enctype="multipart/form-data">
    Voyez vous l'erreur ?

Discussions similaires

  1. [Python 3.X] Créer une image png à partir d'une image de format quelconque avec Python
    Par bguy4 dans le forum Général Python
    Réponses: 3
    Dernier message: 30/10/2014, 10h49
  2. détourage contour d'une fenêtre a partir d'une image
    Par ->maxoume<-{loul} dans le forum Windows
    Réponses: 1
    Dernier message: 24/07/2007, 11h30
  3. Récupérer une image JPEG à partir d'une vidéo
    Par kurul1 dans le forum C++Builder
    Réponses: 8
    Dernier message: 09/08/2006, 10h51
  4. Réponses: 13
    Dernier message: 23/06/2006, 12h12
  5. Poids d'une image a partir d'une url
    Par matique dans le forum Langage
    Réponses: 4
    Dernier message: 11/02/2006, 20h41

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