Bonjour
J'ai une Upload de fichier à mettre en place. J'ai mis en place un FormPanel Coté client et un servlet coté serveur. Le submit me fait bien arriver sur le serveur, mais je ne récupère aucune donnée au niveau de la request
Version imprimable
Bonjour
J'ai une Upload de fichier à mettre en place. J'ai mis en place un FormPanel Coté client et un servlet coté serveur. Le submit me fait bien arriver sur le serveur, mais je ne récupère aucune donnée au niveau de la request
Mon code coté client :
Coté serveur :Code:
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 public final class UploadRepExcelOstView { public Widget asWidget() { // Create a FormPanel and point it at a service. final FormPanel form = new FormPanel(); form.setAction("FileUploadServlet"); // Because we're going to add a FileUpload widget, we'll need to set the // form to use the POST method, and multipart MIME encoding. form.setEncoding(FormPanel.ENCODING_MULTIPART); form.setMethod(FormPanel.METHOD_POST); // Create a panel to hold all of the form widgets. VerticalPanel panel = new VerticalPanel(); Label title = new Label("Selectionner le fichier"); panel.add(title); // Create a FileUpload widget. final FileUpload upload = new FileUpload(); upload.setName("file"); upload.setTitle("Browse ..."); panel.add(upload); panel.add(new HTML("<br>")); // Add a 'submit' button. panel.add(new Button("Submit", new ClickHandler() { public void onClick(ClickEvent event) { form.submit(); } })); form.setWidget(panel); // Add an event handler to the form. form.addSubmitHandler(new FormPanel.SubmitHandler() { public void onSubmit(SubmitEvent event) { // This event is fired just before the form is submitted. We can // take this opportunity to perform validation. if (upload.getFilename().length() == 0) { Window.alert("Click browse to choose a file"); event.cancel(); } } }); form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() { public void onSubmitComplete(SubmitCompleteEvent event) { // When the form submission is successfully completed, this // event is fired. Assuming the service returned a response of type // text/html, we can get the result text here (see the FormPanel // documentation for further explanation). Window.alert(event.getResults()); } }); RootPanel.get().add(form); return panel; } }
web.xml :Code:
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 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletFileUpload upload = new ServletFileUpload(); boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { try { FileItemIterator iter = upload.getItemIterator(request); while (iter.hasNext()) { FileItemStream item = iter.next(); InputStream stream = item.openStream(); stream = item.openStream(); // Process the input stream ByteArrayOutputStream out = new ByteArrayOutputStream(); int len; byte[] buffer = new byte[8192]; while ((len = stream.read(buffer, 0, buffer.length)) != -1) { out.write(buffer, 0, len); } int maxFileSize = 10 * (1024 * 2); // 10 megs max if (out.size() > maxFileSize) { throw new RuntimeException("File is > than " + maxFileSize); } } } catch (Exception e) { throw new RuntimeException(e); } } }
Code:
1
2
3
4
5
6
7
8 <servlet> <servlet-name>uploadServlet</servlet-name> <servletclass>com.sgcm.omsweb.server.FileUploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>uploadServlet</servlet-name> <url-pattern>/FileUploadServlet</url-pattern> </servlet-mapping>
Merci, ai déjà regardé mais je ne trouve pas la cause de mon pb
Avec ca:??
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setFileSizeMax(10*1024*1024); //10 MB try { List<?> items = upload.parseRequest(request); for (Object item : items) { if (item instanceof FileItem) { FileItem fileitem = (FileItem) item; byte[] fileContents = fileitem.get(); ... } } } catch (FileUploadException e) { e.printStackTrace(); }
Merci mais j'ai toujours le même PB... J'ai changé de browser (FireFox) et utilise FireBug pour voir, j'ai bien mon URL mais je n'ai rien dans le POST
Je pense que mon post sur mon blog va t'aider :
http://www.celinio.net/techblog/?p=1207
Bonjour,
Personnellement j'ai le même problème (Eclipse 3.6, jre6, GWT 2.4, fileupload 1.2.2).
Histoire d'essayer d'avancer le problème, j'ai repris le code du lien de longbeach en rajoutant quelques affichages sur l'objet request, ce qui me donne :
Code:
1
2
3
4
5
6
7 Inside doPost Before try getContextPath() : getContentType() : multipart/form-data; boundary=----WebKitFormBoundaryhnu1TfdnB6tYaFW6 getQueryString() : null getPathInfo() : null Avant while
le iter.hasNext() ne renvoie jamais true
niveau client mon .setName est bien mis sur le FileUpload.
Je suis preneur de toute solution ou proposition également !
Je n'ai pas avancé sur le sujet, qq as une idée ?
Pour info, j'ai résolu le problème chez moi en modifiant ma ligne :
RootPanel.get().add(panel);
en
RootPanel.get().add(form);