Upload en Java/jsp - Java - Programmation
Marsh Posté le 01-09-2006 à 10:58:20
si tu trouves pas ce qu'il te faut, code le toi même, c'est pas sorcier ...
Marsh Posté le 01-09-2006 à 11:07:30
Justement c'est ça la question comment en Jsp ou java on récupere le flux post ? et comment le lire?
Marsh Posté le 01-09-2006 à 14:20:01
Bon voilà vite fait ce que fait la jsp en question
Code :
|
Le truc c'est que pour un très gros fichier genre 500 Mo, 'jvoulais pousser la bête un peu loin, j'ai pas l'impression qu'il coupe l'upload.
ca prend du temps alors que je lit directement le flux.
Marsh Posté le 01-09-2006 à 14:46:40
Donc la question est comment couper le flux entrant une fois que j'ai lu ce que je voulais ?
Marsh Posté le 01-09-2006 à 14:53:33
Mauvaise gestion des exceptions. Les streams ne seront pas fermés en cas d'erreur avant l'appel à close().
Marsh Posté le 01-09-2006 à 15:19:25
C'est pour ça que j'incrémente un compteur.
Ce compteur permet de sortir de la boucle une fois par exemple 15000 lignes lues.
après avoir lu ces 15000 ligne d'un fichier de 400 Mo, je souhaiterais fermé le flux de données allant de client vers le serveur, ainsi au lieu de faire transiter 4000 Mo, je ne fait transiter que 2 Mo.
Marsh Posté le 01-09-2006 à 15:56:23
J'ai essayer de fermer le request mais bon aucune méthode de dispo...
Marsh Posté le 01-09-2006 à 17:52:37
Aquarius_28 a écrit : je souhaiterais fermé le flux de données allant de client vers le serveur, ainsi au lieu de faire transiter 4000 Mo, je ne fait transiter que 2 Mo. |
T'as essayé de simplement envoyer la réponse ?
PS: attention, tu ne gères pas l'encoding de ton fichier. D'ailleur, ca doit t'être indiqué par ton idée : readLine est dépréciée : http://java.sun.com/j2se/1.4.2/doc [...] readLine()
Marsh Posté le 01-09-2006 à 18:50:08
Aquarius_28 a écrit : C'est pour ça que j'incrémente un compteur. |
Ca n'a rien à voir. La gestion des exceptions reste incorrecte.
Marsh Posté le 01-09-2006 à 23:11:48
sircam a écrit : Ca n'a rien à voir. La gestion des exceptions reste incorrecte. |
Ca n'a rien à voir. La gestion des exceptions reste incorrecte.
je suis d'arroc, mais ce n'est pas ça qui va résoudre mon probleme, quoi qu'il en soit je fermerais autrement les flux.
sircam a écrit : Ca n'a rien à voir. La gestion des exceptions reste incorrecte. |
Huum c'est à dire?
c'est dommage j'ai pas d'IDE chez moi mais tu pense qu'avec un response.LaMethodeQuiVaBien() ca pourrait le faire?
Marsh Posté le 01-09-2006 à 23:42:46
y a pas de "méthode qui va bien". sert juste la réponse de façon normal ... logiquement, le browser devrait arrêter son envoi (je susi pas certain de moi)
peut être que tu peux le lui indiquer en lui balançant un header http spécial genre connection: close
Marsh Posté le 02-09-2006 à 00:45:22
Excuse moi si mes questions te semblent trop évidente mais ce domaine de Java j'le maitrise pas trop...
mais qu'entend tu par envoyer la réponse ?
Car en regardant la doc de httpresponseServlet j'ai trouvé
response.setHeader("Connection", "close" );
ou alors aussi
response.sendError(HttpServletResponse.SC_PARTIAL_CONTENT);
Mais ca ne change rien peut être qu'il n'envoie pas la réponse ?
Comment envoyer la réponse pendant la reception du flux ??
Marsh Posté le 02-09-2006 à 01:48:42
Bon si jamais vous trouver vous êtes les rois du monde !
Je écumé le net mais pour l'instant ca ne sert a rien ...
Merci Benou paske j'ai quand même bien avancé grace a toi !
Marsh Posté le 02-09-2006 à 03:37:40
Bon finalement je vais me diriger vers une solution un peu new age ...
pour uploader un fichier, il faut cliquer sur un bouton ouvrant une pop-up, cette pop-up proposera une interface toute bete POST file.
coté serveur l'upload enregistrera en base le début d'Upload.
A la fin de me traitement, j'enregistre la fin du traitement, qui ne coorespond aps forcement avec la fin d'upload reel car je souahite pouvoir uploader que les 15 000 premiere lignes d'un fichier.
Pendant ce temps, coté client dans la page ouvrant la pop up de telechargement. une petite fonction ajax envoie une requete afin de vérifier si l'upload est terminé, si c'est le cas elle ferme la pop up, et la connexion par la même occasion !
Marsh Posté le 02-09-2006 à 11:45:34
OMFG.
Marsh Posté le 02-09-2006 à 16:35:57
Aquarius_28 a écrit : |
t'envoi la réponse simplement en sortant de la méthode service (enfin doGet ou doPost).
Par défaut, ca renvoir une réponse "200 - OK". Si tu veux voir quelque chose dans ton navigateur tu fais response.getOutputStream().write("reponse envoyee" );
je pense que si le client reçoit une réponse du serveur, il va peut être arrêter d'envoyer sa requête ...
Marsh Posté le 03-09-2006 à 01:07:07
C'est ce que je pensait aussi mais il attend de finir d'envoyer sa requete avant de lire celle envoyé par le serveur.
Il fait la sourde oreille !
Mais bon là j'ai mis au point ce petit "framework" et ca marche tout comme il faut, et en partie (en très grosse partie même) grace a toi !
Ca permet de controler l'upload, tu peut même si tu en a envie de faire une progresse barre, mais ca serait un peu lourd quand même au niveau mise à jour de la base.
Marsh Posté le 01-09-2006 à 10:35:36
Bonjour,
J'ai besoin de dans une application web d'uploader un fichier xml, jusque là rien d'insurmontable.
Mais le truc c'est qu'on est en mesure de me fournir de TRES gros fichier xml (genre 250 Mo) !
Et ce que je souhaite faire c'est d'acepter de tel upload mais de couper le flux dès que j'ai reçu, disont 10 Mo de données.
Le fichier obtenu sera bien entendu incomplet mais ceci est un autre probleme que je sais déja résoudre.
J'ai cherché sur le WEb hier mais je n'ai trouvé que des classe trop bien faites, je recherche vraiment un truc de base
du genre une classe apellée par ma jsp qui le lit flux et le coupe une fois que c'est bon.
Merci d'avance pour votre aide