[GWTUpload]Connaître la taille d'un fichier durant upload
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 :lol:) 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:
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:
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:
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 :cry: