Bonjour,

je développe actuellement une application mobile qui envoi une vidéo sur un serveur distant (tomcat).

J'arrive bien a envoyer ma vidéo sur le serveur le soucis et que je n'arrive pas a lire la vidéo envoyé.

Coté Androïd l'envoi ce fait via une asyncTask
voici le code (trouvé sur internet et qui à l'air de fonctionner correctement):
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
HttpURLConnection conn = null;
	    DataOutputStream dos = null;
	    DataInputStream inStream = null;
	    String existingFileName = "/sdcard/ma_video_2.mp4";
	    String lineEnd = "\r\n";
	    String twoHyphens = "--";
	    String boundary = "*****";
	    int bytesRead, bytesAvailable, bufferSize;
	    byte[] buffer;
	    int maxBufferSize = 1 * 1024 * 1024;
	    String responseFromServer = "";
		String urlString = MON_URL;
 
	    try {
 
	        //------------------ CLIENT REQUEST
	        FileInputStream fileInputStream = new FileInputStream(new File(existingFileName));
	        // open a URL connection to the Servlet
	        URL url = new URL(urlString);
	        // Open a HTTP connection to the URL
	        conn = (HttpURLConnection) url.openConnection();
	        // Allow Inputs
	        conn.setDoInput(true);
	        // Allow Outputs
	        conn.setDoOutput(true);
	        // Don't use a cached copy.
	        conn.setUseCaches(false);
	        // Use a post method.
	        conn.setRequestMethod("POST");
	        conn.setRequestProperty("Connection", "Keep-Alive");
	        conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
	        dos = new DataOutputStream(conn.getOutputStream());
	        dos.writeBytes(twoHyphens + boundary + lineEnd);
	        dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + existingFileName + "\"" + lineEnd);
	        dos.writeBytes(lineEnd);
	        // create a buffer of maximum size
	        bytesAvailable = fileInputStream.available();
	        bufferSize = Math.min(bytesAvailable, maxBufferSize);
	        buffer = new byte[bufferSize];
	        // read file and write it into form...
	        bytesRead = fileInputStream.read(buffer, 0, bufferSize);
 
	        while (bytesRead > 0) {
 
	            dos.write(buffer, 0, bufferSize);
	            bytesAvailable = fileInputStream.available();
	            bufferSize = Math.min(bytesAvailable, maxBufferSize);
	            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
 
	        }
 
	        // send multipart form data necesssary after file data...
	        dos.writeBytes(lineEnd);
	        dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
	        // close streams
	        Log.e("Debug", "File is written");
	        fileInputStream.close();
	        dos.flush();
	        dos.close();
 
	    } catch (MalformedURLException ex) {
	        Log.e("Debug", "error: " + ex.getMessage(), ex);
	    } catch (IOException ioe) {
	        Log.e("Debug", "error: " + ioe.getMessage(), ioe);
	    }
 
	    //------------------ read the SERVER RESPONSE
	    try {
 
	        inStream = new DataInputStream(conn.getInputStream());
	        String str;
 
	        while ((str = inStream.readLine()) != null) {
 
	            Log.e("Debug", "Server Response " + str);
 
	        }
 
	        inStream.close();
 
	    } catch (IOException ioex) {
	        Log.e("Debug", "error: " + ioex.getMessage(), ioex);
	    }
Et le code pour récupérer la vidéo coté Tomcat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
InputStream input = new BufferedInputStream(req.getInputStream());
				OutputStream output = new FileOutputStream(new File("MON_CHEMIN\\ma_video_2.mp4"));
				byte data[] = new byte[1024];
				long total = 0;
				int count2;
				while((count2 = input.read(data)) >0 ){//!= -1){
					total+=count2;
 
//					System.out.println("progress: " + (total *100/fileLength));
					output.write(data, 0, count2);
				}
				output.flush();
				output.close();
				input.close();

J'ai cherché sur internet et essayé plusieurs choses mais a chaque fois j'arrive a envoyer la vidéo et la récupérer mais jamais à la lire.

Auriez vous une idée de la marche a suivre ?


Merci d'avance.

Alexis