Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1186 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Upload de fichiers par HTTP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Upload de fichiers par HTTP

n°1524119
esox_ch
Posté le 05-03-2007 à 23:49:54  profilanswer
 

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?? :heink: Il n'y a aucun moyen de contourner ? :heink:

 

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
mood
Publicité
Posté le 05-03-2007 à 23:49:54  profilanswer
 

n°1524193
phnatomass
Je m'empare de ton esprit !!
Posté le 06-03-2007 à 10:30:44  profilanswer
 

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.

n°1524297
esox_ch
Posté le 06-03-2007 à 12:32:31  profilanswer
 

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 :D
 
Merci beaucoup


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1524368
phnatomass
Je m'empare de ton esprit !!
Posté le 06-03-2007 à 14:15:26  profilanswer
 

1) je ne comprends pas ta question
 Tu auras un bout de code qui ressemble à ca  

Code :
  1. myProgressBar.setMinimum(0);
  2. myProgressBar.setMaximum(fileToUpload.length());
  3. .....
  4. while((nbChars=inputStreamFile.read(buffer))>0)
  5. {
  6.    outputStreamToServer.write(buffer, 0, nbChars);
  7.    myProgressBar.setValue(myProgressBar.getValue() + nbChars)
  8. }


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)

n°1524660
esox_ch
Posté le 06-03-2007 à 17:43:36  profilanswer
 

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?:D


Message édité par esox_ch le 06-03-2007 à 17:49:39
n°1524724
phnatomass
Je m'empare de ton esprit !!
Posté le 06-03-2007 à 18:22:21  profilanswer
 

1) Le projet fileupload est fait pour être utilisé coté serveur et pas coté client.
2) poste ton code

n°1524740
esox_ch
Posté le 06-03-2007 à 18:42:14  profilanswer
 

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 :
  1. import javax.activation.MimetypesFileTypeMap;
  2. import javax.swing.filechooser.FileFilter;
  3. import java.io.File;
  4. import java.util.ArrayList;
  5. public class MediaFilter extends FileFilter {
  6.     private ArrayList allowedMime;
  7.     public MediaFilter() {
  8.         allowedMime = new ArrayList();
  9.         allowedMime.add("video/x-msvideo" );
  10.         allowedMime.add("image/png" );
  11.         allowedMime.add("ccc" );
  12.     }
  13.     public boolean accept(File file) {
  14.         if (file.isDirectory())
  15.             return true;
  16.             return allowedMime.contains(getFileMime(file));
  17.     }
  18.     private String getFileMime(File file){
  19.    
  20.         System.out.print("Name" + file.getName() + " Mime :" );
  21.         System.out.println(new MimetypesFileTypeMap().getContentType(file));
  22.         return new MimetypesFileTypeMap().getContentType(file);
  23.     }
  24.     public String getDescription() {
  25.         return "Filtre permettant uniquement les video (avi, rm,...)";
  26.     }
  27. }
 

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?


Message édité par esox_ch le 06-03-2007 à 18:43:03

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1525021
esox_ch
Posté le 07-03-2007 à 10:31:39  profilanswer
 

Salut,

 

Donc apperemment mon classPath était pas bien setté ...
Maintenant quand je fais appletviewer maPage.html je recois aucune erreur, ni aucun output :D
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?


Message édité par esox_ch le 07-03-2007 à 10:39:11
n°1525039
phnatomass
Je m'empare de ton esprit !!
Posté le 07-03-2007 à 10:50:00  profilanswer
 

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.


Message édité par phnatomass le 07-03-2007 à 11:26:54
n°1525046
esox_ch
Posté le 07-03-2007 à 10:56:40  profilanswer
 

D'accord merci, alors je vais faire comme ça :D
 
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 !

mood
Publicité
Posté le 07-03-2007 à 10:56:40  profilanswer
 

n°1525731
phnatomass
Je m'empare de ton esprit !!
Posté le 08-03-2007 à 11:08:55  profilanswer
 

HTTP  PUT ?
Envoi par FTP ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Upload de fichiers par HTTP

 

Sujets relatifs
Probeleme de Pointage HTTPCompiler un ensemble de fichiers (XML + images)
[PHP] parcours de fichiers dans un dossiersconfirmer la suppression de fichiers en chaîne
RewriteRule http://monsite.fr -> http://www.monsite.frupload fichier (application serveur?)
Une commande shell unix pour faire un POST Http d'un fichier ?Upload de fichier sur un disque depuis une page asp.net
[RESOLU] Probleme pour renommer les fichiers PHPUpload via HTTP => impossible d'acceder aux fichiers
Plus de sujets relatifs à : Upload de fichiers par HTTP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR