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 :

Chargement d'un fichier


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Inscrit en
    Septembre 2012
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 20
    Par défaut Chargement d'un fichier
    Bonjour,

    N'étant pas expert en la matière, je vous explique mon problème en espérant que vous pourrez m'aider...

    J'ai créé une JSP et une Servlet afin de pouvoir uploader un fichier sur un serveur. J'ai déployer le tout sur tomcat, jusque la aucun souci, mais lorsque je tente de charger n'importe quel fichier, celui-ci est introuvable...

    Voici ma Servlet :

    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
     
    public class CommonsFileUploadServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	private static final String TMP_DIR_PATH = "C:\\Perso\\tmp";
    	private File tmpDir;
    	private static final String DESTINATION_DIR_PATH ="/files";
    	private File destinationDir;
        /**
         * Default constructor. 
         */
        public CommonsFileUploadServlet() {
            // TODO Auto-generated constructor stub
        }
     
    	public void init(ServletConfig config) throws ServletException {
    		super.init(config);
    		tmpDir = new File(TMP_DIR_PATH);
    		if(!tmpDir.isDirectory()) {
    			throw new ServletException(TMP_DIR_PATH + " is not a directory");
    		}
    		String realPath = getServletContext().getRealPath(DESTINATION_DIR_PATH);
    		destinationDir = new File(realPath);
    		if(!destinationDir.isDirectory()) {
    			throw new ServletException(DESTINATION_DIR_PATH+" is not a directory");
    		}
    	}
     
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    	}
     
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
     
    		PrintWriter out = response.getWriter();
    	    response.setContentType("text/plain");
     
    		out.println("emplacement tmp : " + getServletContext().getRealPath(DESTINATION_DIR_PATH));
    		out.println("emplacement files : " + TMP_DIR_PATH);
     
    	    out.println("<h1>Servlet File Upload Example using Commons File Upload</h1>");
    	    out.println();
     
    		DiskFileItemFactory  fileItemFactory = new DiskFileItemFactory ();
    		/*
    		 *Set the size threshold, above which content will be stored on disk.
    		 */
    		fileItemFactory.setSizeThreshold(1*1024*1024); //1 MB
    		/*
    		 * Set the temporary directory to store the uploaded files of size above threshold.
    		 */
    		fileItemFactory.setRepository(tmpDir);
     
    		ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
    		try {
    			/*
    			 * Parse the request
    			 */
    			List items = uploadHandler.parseRequest(request);
    			if (items != null)
    			{
    				out.println("GAGNE : item trouvé");
    			}
    			Iterator itr = items.iterator();
    			while(itr.hasNext()) {
    				FileItem item = (FileItem) itr.next();
    				/*
    				 * Handle Form Fields.
    				 */
    				if(item.isFormField()) {
    					out.println("File Name = "+item.getFieldName()+", Value = "+item.getString());
    				} else {
    					//Handle Uploaded files.
    					out.println("Field Name = "+item.getFieldName()+
    						", File Name = "+item.getName()+
    						", Content type = "+item.getContentType()+
    						", File Size = "+item.getSize());
    					/*
    					 * Write file to the ultimate location.
    					 */
    					File file = new File(destinationDir,item.getName());
     
    					if(!file.exists())
    					{
    						out.println("RATEEEE");
    					}
    					item.write(file);
    				}
    				out.close();
    			}
    		}catch(FileUploadException ex) {
    			log("Error encountered while parsing the request",ex);
    		} catch(Exception ex) {
    			log("Error encountered while uploading file",ex);
    		}
     
    	}
    J'ai placé quelque indicateur et lorsque je charge le fichier, il rentre dans ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	if(!file.exists())
    	{
    	         out.println("RATEEEE");
    	}
    Je suppose que le problème vient de là mais je n'arrive à aucun résultat...

    Merci d'avance

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File file = new File(destinationDir,item.getName());
    Crée un objet File en mémoire, mais ça ne crée pas pour autant un fichier sur le disque, il est normal que file.exist() renvoie false, puisque tu n'as pas encore créé le fichier.

    Pour le copier, tu peux utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Streams.copy(item.getInputStream(),new FileOutputStream(file),true)

  3. #3
    Membre averti
    Inscrit en
    Septembre 2012
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 20
    Par défaut
    merci beaucoup pour ta réponse,

    Après quelques recherches, je n'obtiens pas plus de résultat...

    j'ai essayé 2 methodes dont celle que tu m'as indiqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import org.apache.commons.fileupload.util.Streams;
     
    	File file = new File(destinationDir,item.getName());
    	Streams.copy(item.getInputStream(),new FileOutputStream(file),true);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import org.apache.commons.io.*;
     
    	File file = new File(destinationDir,item.getName());
    	IOUtils.copy(item.getInputStream(),new FileOutputStream(file));
    Je n'ai aucune trace de fichier...

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ton destination dir est vide?

  5. #5
    Membre averti
    Inscrit en
    Septembre 2012
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 20
    Par défaut
    Plus maintenant!!
    Une aprem de passé pour me rendre compte que j'indiquais mal mon chemin à cause des slash et anti-slash...

    Ce code marche finalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		File file = new File("C://Perso//tmp//upload.txt");
    		item.write(file);
    Merci pour ton aide.

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

Discussions similaires

  1. [FLASH MX2004] [AS2] Attendre la fin de chargement d'un fichier avant de continuer.
    Par Demco dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 01/03/2007, 15h13
  2. [DOM XML] Chargement impossible du fichier XML
    Par lietof dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 03/05/2006, 10h37
  3. [Debutant][D7]Pb au chargement d'un fichier *.3ds
    Par [Silk] dans le forum OpenGL
    Réponses: 1
    Dernier message: 26/06/2005, 11h10
  4. [SAX] Chargement d'un fichier de paramétrage
    Par doublep dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 05/12/2004, 20h42
  5. chargement d'un fichier externe en base de données
    Par samsbike dans le forum Administration
    Réponses: 3
    Dernier message: 24/08/2004, 17h35

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