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 :

fileUpload et Internet Explorer


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut fileUpload et Internet Explorer
    Bonjour

    Sur mon site développée sous JEE 1.4, j'utilise la librairie fileUpload en version 1.2 pour mes uploads de fichiers. Mon serveur est Tomcat 5.5.
    Mes tests sous Firefox et Safari sont tous satisfaisants. Néanmoins, avec Internet Explorer (5, 6 et 7), j'observe que lors de l'upload, mes fichiers sont bien uploadés mais avec leur path complet d'origine genre C:\Documents and Settings\GLDavid\Mon fichier.txt
    Voici le code de 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
     
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
    		resp.setContentType("text/html");
    		pw = resp.getWriter();
     
    		boolean b = false;
    		java.util.Enumeration en = req.getSession().getAttributeNames();
    		while(en.hasMoreElements()){
    			String key = en.nextElement().toString();
    			if(key.compareTo("authenticated")==0){
    				b = true;
    			}
    		}
     
    		if(!b){
    			req.setAttribute("error", "You are not autorized !");
    			RequestDispatcher rd = req.getRequestDispatcher("index.jsp");
    			rd.forward(req, resp);
    			return;
    		}
    		else{
    			Boolean bool = (Boolean)req.getSession().getAttribute("authenticated");
    			if(bool.booleanValue()!=true){
    				req.setAttribute("error", "You are not autorized !");
    				RequestDispatcher rd = req.getRequestDispatcher("index.jsp");
    				rd.forward(req, resp);
    				return;
    			}
    		}
     
    		String destination = new String();
     
    		//Create a factory for disk-based file items
    		DiskFileItemFactory factory = new DiskFileItemFactory();
    		//factory.setSizeThreshold(maxSize);
    		//Set factory constraints
    		factory.setRepository(new File(path));
    		//Create a new file upload handler
    		ServletFileUpload upload = new ServletFileUpload(factory);
    		List items;
    		try{
    			items = upload.parseRequest(req);
    			if(items.isEmpty()){
    				req.setAttribute("error", "Your form was not well completed !");
    				RequestDispatcher rd = req.getRequestDispatcher("send.jsp");
    				rd.forward(req, resp);
    				return;
    			}
    			Iterator iter = items.iterator();
    			while (iter.hasNext()) {
    			    FileItem item = (FileItem) iter.next();
    			    if (item.isFormField()) {
    			    	if(item.getFieldName().trim().compareTo("repos")==0)
    			    		destination = item.getString();
    			    }
    			    else{
    			    	if(item.getName().trim().length()>0){
    			    		if(item.getSize()<maxSize)
    			    			processUploadedFile(item, destination);
    			    		else{
    			    			returnError("Your file is too fat (<5 Mo) !", req, resp, "send.jsp");
    			    			return;
    			    		}
    			    	}
    			    	else{
    			    		returnError("Your form was not well completed !", req, resp, "send.jsp");
    			    		return;
    			    	}
    			    }
    			}
    			returnMessage("Upload completed successfully !", req, resp, "send.jsp");
    			return;
    		}
    		catch(FileUploadException fue){
    			ExceptionDisplayer ed = new ExceptionDisplayer(fue, pw, this.getServletName());
    			ed.printException();
    		}
    		catch(Exception e){
    			ExceptionDisplayer ed = new ExceptionDisplayer(e, pw, this.getServletName());
    			ed.printException();
    		}
    	}
     
    private void processUploadedFile(FileItem item, String destination) throws Exception{
    		//Process a file upload
    		String final_destination = path+destination+"/"+item.getName();
    		File uploadedFile = new File(final_destination);
    		//getMime(uploadedFile);
    		item.write(uploadedFile);
    	}
    Quelques idées à me proposer ou est-ce encore une bizarrerie d'IE ?

    Merci d'avance de vos réponses.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par GLDavid Voir le message
    Quelques idées à me proposer ou est-ce encore une bizarrerie d'IE ?
    C'est une bizarrerie d'IE... qui vient d'une mauvaise interprétation de la RFC, qui indique que le nom du fichier peut être envoyé, et IE considère que c'est le chemin !

    Il me semble que l'on retrouve aussi ce problème sur les vieux Netscape et peut-être d'autres navigateurs...

    Le plus simple serait donc de traiter le nom afin de découper après le dernier \ ou / :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	public static String basename(String name) {
    		// On recherche le dernier \ ou /
    		int index = Math.max( name.lastIndexOf('\\'), name.lastIndexOf('/'));
    		if (index>=0) {
    			return name.substring(index+1);
    		}
    		return name;
    	}
    Il faut aussi faire attention car selon la RFC le nom n'est pas obligatoire même s'il est fortement conseillé de l'envoyer (dans la pratique il me semble que tous les navigateurs le font) :
    The client application should make best effort to supply the file name
    a++

  3. #3
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut
    Bonjour adi

    Je me disais aussi qu'un développement Web sans une erreur d'IE, ce ne serait plus un bon développement Web
    J'adapte mon code en ce sens
    Merci à toi

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. Internet Explorer
    Par remid1985 dans le forum IE
    Réponses: 3
    Dernier message: 22/01/2004, 13h52
  2. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27
  3. Créer un plug-in pour Internet Explorer
    Par giaco dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/06/2003, 18h12
  4. URL d'Internet Explorer
    Par dbourni dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 06/12/2002, 08h56
  5. internet explorer
    Par numeror dans le forum Web & réseau
    Réponses: 2
    Dernier message: 22/07/2002, 09h23

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