Bonjour,
J'essaie de faire un upload de fichier ... il me pose des problemes ..
En effet, il créé bien un fichier sur le serveur mais il est vide ...
Il me fait cette erreurs 5 fois :
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 java.io.CharConversionException: isHexDigit at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:124) at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:87) at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:407) at org.apache.coyote.tomcat4.CoyoteRequest.parseRequestParameters(CoyoteRequest.java:1966) at org.apache.coyote.tomcat4.CoyoteRequest.getParameter(CoyoteRequest.java:911) at org.apache.coyote.tomcat4.CoyoteRequestFacade.getParameter(CoyoteRequestFacade.java:178) at servlet.UploadServlet.doPost(UploadServlet.java:46) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619) at java.lang.Thread.run(Thread.java:534)
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 public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String path = "C:/project/OGDE/struts/webroot/data/"; String fileName = req.getParameter("fileName"); String id = req.getParameter("id"); String type = req.getParameter("type"); // ...receive the modified (or not) file and save it System.out.println(" Nom du fichier recu par servlet pour upload "+fileName); InputStream in = req.getInputStream(); DataInputStream dis = new DataInputStream(in); File serverFile = new File(path+fileName); System.out.println("fichier uploadé :"+serverFile.getPath()); FileOutputStream fos = new FileOutputStream(serverFile); byte[] tab = new byte[1024]; int lu = dis.read(tab); while(lu>=0) { fos.write(tab, 0, lu); lu = dis.read(tab); } fos.flush(); fos.close(); dis.close();
la fonction qui communique avec la servlet dans mon applet :
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 private void Upload(File sourcelocale) { try { // Ouverture d'une communication avec la servlet URL urlCodeBase = new URL(getCodeBase() + ""); String base = getCodeBase().toString().substring(0,getCodeBase().toString().length() -1 ); int fin = base.lastIndexOf('/'); String racine = getCodeBase().toString().substring(0,fin); URL servletURL2 = new URL( racine + "/OGDE/aliasUploadServlet?fileName="+newname+"&id="+id+"&type="+type); System.out.println("Url de connexion à la servlet pour UPLOAD: "+servletURL2.toString()); HttpURLConnection servletConnection = (HttpURLConnection) servletURL2.openConnection(); //servletConnection.setRequestMethod("POST"); servletConnection.setDoInput(true); servletConnection.setDoOutput(true); servletConnection.setUseCaches(false); servletConnection.setDefaultUseCaches(false); //servletConnection.setRequestProperty("Content-Type","application/octet-stream"); System.out.println("-1"); //upload the file OutputStream out = servletConnection.getOutputStream(); DataOutputStream dos = new DataOutputStream(out); FileInputStream fis = new FileInputStream(sourcelocale); byte[] tab = new byte[1024]; int lu = fis.read(tab); while(lu>=0) { dos.write(tab, 0, lu); lu = fis.read(tab); } System.out.println("-2"); servletConnection.getResponseCode(); dos.flush(); dos.close(); fis.close(); out.close(); System.out.println("-3"); } catch (IOException e) { e.printStackTrace(); } }
Je pense que ca vient de cette erreur le fait qu'il n'arrive pas a uploader le fichier ...
Pourriez vous m'aider svp ?
Partager