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 :

Upload de fichier - JEE


Sujet :

Développement Web en Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 40
    Points
    40
    Par défaut Upload de fichier - JEE
    Bonjour,

    Je cherche à faire un upload de CV via une application JEE.

    Dans mon formulaire j'ai :

    <input type="file" name="cv"><input type="submit" value="Enregistrer">

    J'ai cherché sur Internet ce qu'il y avait mais je trouve que tout semble "plus compliqué" que ce que je veux faire.
    Je pense que je dois juste récupérer le chemin du fichier CV afin de copier ce fichier dans un répertoire de mon serveur.

    Si quelqu'un peut m'aider...

    Merci d'avance.

  2. #2
    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
    Pour soumettre un fichier, il faut que le formulaire soit en enctype multipart/form-data. Comme J2EE ne supporte pas ce format en base, tu dois ajouter à ton projet commons fileupload et suivre les instructions du projet sur comment décoder dans ta servlet.

  3. #3
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 102
    Points : 156
    Points
    156
    Par défaut
    En JEE 6, le multipart a été ajouté.

    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
     
    @WebServlet("/UploadFile")
    @MultipartConfig
    public class PluploadServlet extends HttpServlet {
    	static private final long serialVersionUID = 3447685998419256747L;
    	static private final String RESP_SUCCESS = "{\"jsonrpc\" : \"2.0\", \"result\" : null, \"id\" : \"id\"}";
    	static private final String RESP_ERROR = "{\"jsonrpc\" : \"2.0\", \"error\" : {\"code\": 101, \"message\": \"Failed to open input stream.\"}, \"id\" : \"id\"}";
    	static public final String SEP = System.getProperty("file.separator");
    	static public final String TMP = System.getProperty("java.io.tmpdir");
    	static public final String JSON = "application/json";
    	static public final int BUF_SIZE = 4096;
     
    	private static Logger logger = Logger.getLogger(PluploadServlet.class.getSimpleName());
     
    	private String getFileName(Part part) {
    		String partHeader = part.getHeader("content-disposition");
    		logger.info("Part Header = " + partHeader);
    		for (String cd : part.getHeader("content-disposition").split(";")) {
    			if (cd.trim().startsWith("filename")) {
    				return cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
    			}
    		}
    		return null;
     
    	}
     
    	/**
             * Handles an HTTP POST request from Plupload.
             * 
             * @param req
             *            The HTTP request
             * @param resp
             *            The HTTP response
             */
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		Boolean isAuthenticated = (Boolean) req.getSession(true).getAttribute("isAuthenticated");
    		if (isAuthenticated != null && isAuthenticated) {
    			BeanClient beanClient = (BeanClient) req.getSession(true).getAttribute("beanClient");
    			String responseString = RESP_SUCCESS;
     
    			try {
    				for (Part part : req.getParts()) {
    					String fileName = getFileName(part);
    					if (fileName != null) {
    						logger.info(part.getName());
    						InputStream is = req.getPart(part.getName()).getInputStream();
    						logger.info("File name : " + fileName);
    						saveUploadFile(is, fileName, beanClient);
    						is.close();
    					}
    				}
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    				responseString = RESP_ERROR;
    			}
     
    			resp.setContentType(JSON);
    			byte[] responseBytes = responseString.getBytes();
    			resp.setContentLength(responseBytes.length);
    			ServletOutputStream output = resp.getOutputStream();
    			output.write(responseBytes);
    			output.flush();
    		}
    	}
     
    	/**
             * Saves the given file item (using the given input stream) to the web
             * server's local temp directory.
             * 
             * @param input
             *            The input stream to read the file from
             * @param item
             *            The multi-part MIME encoded file
             * @param beanClient
             */
    	private void saveUploadFile(InputStream input, String fileName, BeanClient beanClient) throws IOException {
     
    		FacesContext fc = FacesContext.getCurrentInstance();
    		FileUploadBean bean = null;
     
    		File localFile = new File(TMP + SEP + fileName);
    		BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(localFile));
    		byte[] data = new byte[BUF_SIZE];
     
    		int count;
    		while ((count = input.read(data, 0, BUF_SIZE)) != -1) {
    			output.write(data, 0, count);
    		}
     
    		input.close();
    		output.flush();
    		output.close();
    	}
     
    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    J'étais parti sur la première solution, avec commons fileupload.

    Quand j'ajoute "enctype="multipart/form-data" à ma balise <form>, "plus rien ne va". J'ai l'impression que les getParameter que je faisais pour d'autres champs dans le même formulaire ne fonctionne pas etc ...

  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
    C'est marqué dans la donc de commons file-upload comment lire ton formulaire avec cette librairie

    forcément, quand tu a un j2EE qui ne gère pas ce forma là, HttpServletRequest ne t'es d'aucune utilisé pour ce décodage.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Je regarde la doc là mais je suis un peu perdu. De plus, je n'utilise pas une servlet mais une action pour le faire. Est-ce génant ? Apparemment oui ...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    J'ai compris comment récupérer les différents champs du formulaire etc. Seulement, d'après la FAQ, parser la requête ne fonctionne pas si on utilise une action ( de l'interface IAction) au lieu d'une Servlet. Il faut refaire un parsing soit-même ?

    Help please..

  8. #8
    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
    de quelle Action tu parle? Quel framework / librarie utilise-tu pour gérer ton formulaire. Si tu ne code pas directement une servlet, il faudra voir comment la librairie que tu utilise gère elle-même les upload. La plupart des librairies comme struts, richfaces, icefaces, gwt, etc ont leur propre manière de gérer les upload.

  9. #9
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 102
    Points : 156
    Points
    156
    Par défaut
    Tu utilises quel serveur web ou d'applications ?

  10. #10
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 169
    Points : 140
    Points
    140
    Par défaut
    bonjour ,

    moi aussi j'ai le meme probleme , mais moi j'utilise struts2 et l'api Jdom

    pour le serveur d'application j'utilise tomcat sous eclipse

    je veux faire upload d'un fichier puis enregistrer sa source dans un fichier xml

    comment faire cela ?

Discussions similaires

  1. Upload de fichiers lourds via JEE
    Par H3bus dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 24/04/2012, 14h48
  2. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  3. upload de fichier
    Par 120 dans le forum ASP
    Réponses: 16
    Dernier message: 21/06/2004, 12h07
  4. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55
  5. Upload de fichiers
    Par GDVL dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2004, 12h44

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