Upload de fichiers par HTTP - Java - Programmation
Marsh Posté le 06-03-2007 à 10:30:44
Une applet non signé ne peut pas lire ton filesystem.
Sinon
http://www.theserverside.com/tt/ar [...] FileUpload
Ils utilisent une librairie bien pratique qui est httpclient d'Apache.
Par contre je ne sais pas si tu pourras user d'un ProgressMonitor
Pour l'usage d'un ProgressMonitor, la stratégie est :
1) Tu connais la taille totale du fichier que tu dois envoyer
2) tu lis sequentiellement ton fichier physique en le copiant dans ton flux reseau, donc tu peux faire progresser ta barre au fur et mesure que tu écris dans ton outputstream qui fait la liaison reseau entre ton applet et le serveur HTTP.
Marsh Posté le 06-03-2007 à 12:32:31
merci.
Mais j'ai encore 2 questions :
- Est-ce que ce systeme d'envoyer X bytes toutes les Y secondes n'est pas imprécis? Car je ne saurai jamais si j'en envoie trop ou trop peu non?
- Comment faire pour inclure cette classe d'apache dans l'applet? Car si je mets juste l'applet sur une page, il va me dire qu'il ne trouve pas la lib (normal vu que je ne l'ai pas dans le path de la jre de mon browser, au meme titre que les autres personnes qui visiteront la page). J'ai entendu parlé du fait qu'on pourrait le faire avec un jar, mais je repete ma totale inexperience dans la matière
Merci beaucoup
Marsh Posté le 06-03-2007 à 14:15:26
1) je ne comprends pas ta question
Tu auras un bout de code qui ressemble à ca
Code :
|
C'est du quick and dirty mais l'idée est là
2) J'ai oublié comment faire (6 ans que j'ai pas codé une applet) ,mais je suis sur qu'il y a moyen quitte à faire une bidouille horrible (jar des lib dans le jar de l'applet)le jar de l'applet)
Marsh Posté le 06-03-2007 à 17:43:36
Salut,
1) Le projet fileUpload est fait pour être utilisé avec des servlets non? Est-ce utilisable même si je n'ai pas de serveur tomcat? 1
2) J'ai pensé aussi à faire qqch du genre mais pas réussi, est-ce que qqn peut m'éclairer?
Marsh Posté le 06-03-2007 à 18:22:21
1) Le projet fileupload est fait pour être utilisé coté serveur et pas coté client.
2) poste ton code
Marsh Posté le 06-03-2007 à 18:42:14
Salut,
Donc j'ai une classe VideoUploader qui à un certain moment defini un filtre, ce qui me permet de pouvoir afficher seulement les fichiers dont le Mime est celui que je veux.
Ce filtre est la classe ci dessous, et celle qui a besoin de classes additionnelles:
Code :
|
Ce que j'ai essayé c'est de faire un jar avec mes 3 classes et le jar de la librairie activator... mais il ne la trouve toujours pas
Sinon à part ça qqn a une idée du comment je peux faire pour envoyer mes trucs avec le bon enctype? De la sorte que ça soit recuperable via file et non pas via post?
Marsh Posté le 07-03-2007 à 10:31:39
Salut,
Donc apperemment mon classPath était pas bien setté ...
Maintenant quand je fais appletviewer maPage.html je recois aucune erreur, ni aucun output
Edit: Vraisemblablement il faudrait que je passe par un htmlconverter même si je suis sous linux ... Bizard
Ce qui m'inquiete un peu pour ta manière de faire avec le while sur l'inputStreamFile, c'est que j'ai l'impression que le while va tourner "a la vitesse de lectrue du fichier" et non pas à celle d'envoie des données non?
Marsh Posté le 07-03-2007 à 10:50:00
Y a une synchronisation.
Tu lis une "sequence" dans ton fichier et tu écris cette séquence dans ton stream connecté au serveur. et tu recommences. Ces 2 opérations sont effectuées séquentiellement donc pas de problème.
De plus la lecture locale du fichier est beaucoup plus rapide que l'envoi du fichier.
Marsh Posté le 07-03-2007 à 10:56:40
D'accord merci, alors je vais faire comme ça
Par contre tu as pas une idée de comment je pourrais faire pour envoyer ce document en sachant que la seule chose que j'ai à disposition sur le serveur c'est un serveur http apache ? Et donc pas de possibilité d'utiliser des modules liés à tomcat ?
Merci beaucoup pour tout ton aide !
Marsh Posté le 05-03-2007 à 23:49:54
Bonjour,
Je suis en train d'écrire une petite applet pour me permettre d'uploader un fichier sur un serveur, et ceci par http.
En gros l'applet se charge et permet de sélectionner un (pour le moment) ou plusieurs fichier (plus tard si tout va bien) qui seront ensuite envoyés vers une page php qui finira le traitement normalement.
Mon problème est que pour le moment, quand j'envoie le fichier il est considéré comme une variable POST et non pas comme un FILE. J'ai cherché à definire le enctype mais pour le moment je n'arrive pas.
En regardant sur le net j'ai vu pas mal de fois des références à struts, mais ne l'ayant jamais utilisé je préférerais rester sur quelque chose de plus "simple" si c'est possible.
Edit: Autre chose, n'ayant pratiquement jamais dépassé le stade du hello world dans les applet, il y a une phrase qui me pose quelques problèmes dans la doc : Applets cannot load libraries or define native methods.
Donc dans mon applet, je n'ai ni le droit d'utiliser des lib (autres que java.*) ni des classes "custom" que j'ai écrites moi même?? Il n'y a aucun moyen de contourner ?
Et en fin :
Il me faudrait une façon de pouvoir visualiser le pourcentage de fichier transféré. J'ai pensé à un progressMonitor pour l'affichage et demander toutes les X secondes au serveur quelle taille fait le fichier ... Mais c'est lourd et je pense qu'il doit y avoir plus facile.
Merci beaucoup pour vos réponses
Esox
Message édité par esox_ch le 06-03-2007 à 00:58:57
---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait