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

GWT et Vaadin Java Discussion :

probleme +file upload


Sujet :

GWT et Vaadin Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut probleme +file upload
    j'essaye de faire l'upload d'un fichier avec les RPC mais je obtenu cette erreur:
    the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is text/x-gwt-rpc; charset=utf-8

    -------------
    My Code
    -------------


    1. GWT widget: FormHandle
    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
     
    RootPanel rootPanel = RootPanel.get();
     
    final FormPanel form = new FormPanel();
    rootPanel.add(form);
    form.setAction(GWT.getModuleBaseURL()+"MyFormHandler");
    form.setEncoding(FormPanel.ENCODING_MULTIPART);
    form.setMethod(FormPanel.METHOD_POST);
    .........
    .........
    .........
     
    panel.add(new Button("Submit", new ClickListener() {
    public void onClick(Widget sender) {
    form.submit();
    }
    }));
     
    .........
    .........
    .........
     
    form.addFormHandler(new FormHandler() {
    public void onSubmit(FormSubmitEvent event) {
    service.fileUpload(new AsyncCallback(){
    public void onFailure(Throwable caught) {
    Window.alert("FileUpload Failure!!");
    }
     
    public void onSuccess(Object result) {
    Window.alert("FileUpload Success!!");
    }});
    event.setCancelled(true);
    }
     
    public void onSubmitComplete(FormSubmitCompleteEvent event) {
    Window.alert(event.getResults());
    }
    });
     
    RootPanel.get().add(form)
    2. Servlet:: MyFormHandlerImpl

    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
    public class MyFormHandlerImpl extends RemoteServiceServlet implements MyFormHandler {
     
    /**
    *
    */
    private static final long serialVersionUID = 1L;
     
    @Override
    public void fileUpload() {
    System.out.println("0");
    HttpServletRequest request = super.getThreadLocalRequest();
    HttpServletResponse response = super.getThreadLocalResponse();
     
    boolean isMultiPart =
    FileUpload.isMultipartContent(request);//isMultipartContent(request)
     
    String parentPath ="d:\\";
     
    if (isMultiPart) {
    System.out.println("3");
    DiskFileUpload upload = new DiskFileUpload();
    try {
    List items = upload.parseRequest(request);
    Iterator it = items.iterator();
    while (it.hasNext()) {
    FileItem item = (FileItem) it.next();
    if(!item.isFormField()){
    File fullFile = new File(item.getName());
    File savedFile = new File(parentPath,fullFile.getName());
    item.write(savedFile);
    }
    }
    } catch (FileUploadException fUE) {
    System.out.println("file not found");
    } catch (Exception e){
    System.out.println("unknown exception");
    }
    }
     
    }
    }

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Tu ne peux pas faire d'upload de fichier avec RPC ! pas plus en ajax d'ailleurs (qui est utilsé par RPC)

    Il faut côté client utilisant le composant FileUpload qui encapsule le composant html éponyme.

    On dirait que c'est ce que tu fais.


    Et côté serveur, utiliser une servlet en s'aidant pour aller plus vite d'une librairie comme File Upload d'apache

    Là aussi, tu sembles utiliser cette librairie.
    Mais tu ne dois pas étendre la servlet de Google mais HttpServlet à la place.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut upload ne fonctionne pas
    voici mon code je ne trouve aucun erreur et pourtant il ne fonctionne pas je ne sais pas pourkoi??
    /*************
    code source
    ***************/

    coté client

    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
    VerticalPanel panel = new VerticalPanel(); 
    	  final FormPanel form = new FormPanel();
    	  final FileUpload fileupload=new FileUpload();
    	 //
    	  form.setAction(GWT.getModuleBaseURL()+"/servletupload");
    	  form.setEncoding(FormPanel.ENCODING_MULTIPART);
    	  form.setMethod(FormPanel.METHOD_POST);
    	  form.setWidget(panel);
    	  panel.add(fileupload);
     
    	  panel.add(new Button("Submit", new ClickHandler() {
              public void onClick(ClickEvent event) {
                form.submit();
                 }
    	           }));
    	 // form.add(panel);
    	  form.addSubmitHandler(new FormPanel.SubmitHandler() {
              public void onSubmit(SubmitEvent event) {
            	  System.out.print("submit");
              }
      });
     
    	  	form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
              public void onSubmitComplete(SubmitCompleteEvent event) {
            	  Window.alert(event.getResults());
            	  System.out.println("terminé");
              }
      });
     
    	  RootPanel.get().add(form);
      }

    /*******************
    coté seveur

    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
    public void doPost (HttpServletRequest request, HttpServletResponse reponse ) throws ServletException, IOException{
     
    	//ServletFileUpload upload = new ServletFileUpload();
    	// Check that we have a file upload request
    	boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    	String parentPath ="/home/zizou/";
    	System.out.println("1");
     
     
    	if (isMultipart)
    	{
    		System.out.println("2");
    		DiskFileUpload upload = new DiskFileUpload();
    		try {
    			List items = upload.parseRequest(request);
    			Iterator it = items.iterator();
    			while (it.hasNext()) {
    			FileItem item = (FileItem) it.next();
    			System.out.println(it.next());
    			if(!item.isFormField())
    				{
    				System.out.println("3");
    				File fullFile = new File(item.getName());
    				File savedFile = new File(parentPath,fullFile.getName());
    				item.write(savedFile);
     
    				}
    			}
     
    		} catch (FileUploadException fUE) {
    			System.out.println(fUE);
    		} catch (Exception e){
    		System.out.println("unknown exception");
    	}
    	}
    	else {System.out.println("!MUltipart");}
    }

    et je ajouté cette ligne au fichier ***.gwt.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <servlet path="/servletupload"   class='com.mycompany.yasca.uploadFile'></servlet>
    /************
    mon servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <servlet>
        <servlet-name>servletupload</servlet-name>
        <servlet-class>com.mycompany.yasca.server.uploadFile2</servlet-class>
      </servlet>
     
      <servlet-mapping>
        <servlet-name>servletupload</servlet-name>
        <url-pattern>/yasca2/*</url-pattern>
      </servlet-mapping>

  4. #4
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Je vois des System.out dans ta servlet.
    Il affiche lesquels de ces chiffres ?

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    il affiche 1 et le 2 mais pas le 3 ..

  6. #6
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Il te faut ajouter un nom à l'input de type file qui sert à les distinguer côté serveur au besoin :

    fileupload.setName("monpremierfile");

    Si tu ne met pas de nom, le fichier n'est pas envoyé et c'est pour cela qu'il ne faisait rien.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre aide
    l'upload fonctionne tres bien mais j'ai un probleme avec l'upload des fichiers.zip
    qu'est je dois ajouter a mon code .......

  8. #8
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Par problème, qu'entends tu ?

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    il fait l'upload de fichier.zip dans l'emplacement definie mais
    lorsque j'essaye d'ouvrir le fichier.zip manuellement il m'affiche un erreur
    parceque il n'a pas bien transmis ....
    je pense que pour l'upload de fichier.zip il changer un peux le code??????

  10. #10
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    Salut deisy, il fuat peut être envoyer le fichier en mode binaire (à l'opposé du mode texte) ?

Discussions similaires

  1. Probleme de upload file en xhtml
    Par simotaqi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 18/02/2010, 17h19
  2. Probleme d'upload
    Par FreshVic dans le forum Struts 1
    Réponses: 10
    Dernier message: 22/05/2006, 17h15
  3. [uploadfile] - Probleme pour upload
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 13/07/2005, 12h28
  4. [Upload] probleme d upload de fichier
    Par Stef784ever dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2005, 17h45
  5. [com applet-servlet][file upload] CharConversionException
    Par meufeu dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 10/08/2004, 12h03

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