Bonjour à tous,

J'utilise la librairie GWTUpload pour uploader des fichiers. Elle marche très bien mais j'ai un problème :
J'aimerai connaître la taille du fichier à envoyer pas avant l'upload (impossible à cause des restrictions JS) mais durant l'upload.
J'ai essayé des tas de trucs sans aucun résultats... A chaque fois, la taille (approximative) du fichier m'ai donné à la fin de l'upload (j'ai essayé avec l'envoi d'un fichier de 500Mo, je peux vous dire que j'ai attendu pour avoir cette foutue taille de fichier ) or ce n'est pas ce que je veux... Rassurez-moi, ça doit être possible vu qu'il s'agit d'un envoi en multi-part, non ?

J'ai tellement été dépité que j'ai un peu tout essayé ...

Code 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
SingleUploader fileUpload1 = new SingleUploader();
		fileUpload1.setAutoSubmit(true);       // Submit automatique dès qu'un fichier a été selectionné
		fileUpload1.avoidRepeatFiles(true);    // Renvoi d'un même fichier désactivé
		fileUpload1.avoidEmptyFiles(true);     // Envoi de fichier vide (pas de selection faite) désactivé
 
		fileUpload1.setServletPath("/teleprocedure/UploadServ");  // Chemin vers la servlet cible
		RootLayoutPanel.get().add(fileUpload1);
 
		fileUpload1.addOnStatusChangedHandler(new OnStatusChangedHandler() 
		{
			@Override
			public void onStatusChanged(IUploader uploader) 
			{
				System.out.println("** ONSTATUSCHANGED **");
				System.out.println("server response = "+uploader.getServerResponse()+" at status = "+uploader.getStatus().name());
				System.out.println("field = "+uploader.getServerInfo().field+" at status = "+uploader.getStatus().name());
				System.out.println("message = "+uploader.getServerInfo().message+" at status = "+uploader.getStatus().name());
				System.out.println("size = "+uploader.getServerInfo().size+" at status = "+uploader.getStatus().name());
			}
		});
 
		fileUpload1.addOnChangeUploadHandler(new OnChangeUploaderHandler() {
 
			@Override
			public void onChange(IUploader uploader) {
				System.out.println("** ONCHANGE **");
				System.out.println("server response = "+uploader.getServerResponse()+" at status = "+uploader.getStatus().name());
				System.out.println("field = "+uploader.getServerInfo().field+" at status = "+uploader.getStatus().name());
				System.out.println("message = "+uploader.getServerInfo().message+" at status = "+uploader.getStatus().name());
				System.out.println("size = "+uploader.getServerInfo().size+" at status = "+uploader.getStatus().name());
 
			}
		});
 
		fileUpload1.addOnFinishUploadHandler(new OnFinishUploaderHandler() 
		{
			@Override
			public void onFinish(IUploader uploader) 
			{
				System.out.println("** ONFINISH **");
				System.out.println("server response = "+uploader.getServerResponse()+" at status = "+uploader.getStatus().name());
				System.out.println("field = "+uploader.getServerInfo().field+" at status = "+uploader.getStatus().name());
				System.out.println("message = "+uploader.getServerInfo().message+" at status = "+uploader.getStatus().name());
				System.out.println("size = "+uploader.getServerInfo().size+" at status = "+uploader.getStatus().name());
			}
		});
Code serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
public class FileUploadServiceImpl extends UploadAction 
{
	private static final long serialVersionUID = -2261761442289987037L;
 
	@Override
	public String executeAction(HttpServletRequest request, List<FileItem> sessionFiles) throws UploadActionException 
	{
		String ret = request.getContentLength()+"";
		super.removeSessionFileItems(request);
		return ret;
	}
}
PS : J'ai essayé cette astuce à mettre dans le web.xml, ça marche bien ok..., mais le navigateur me balance une hideuse pop up type JS avec le message "taille de fichier trop importante" que je n'arrive pas à virer / adapter...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
	  <context-param>
	    <param-name>maxSize</param-name>
	    <param-value>5000000</param-value> <!-- Max 5Mb -->
	  </context-param>
Je m'en remets donc à votre aide... Merci d'avance