IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Applets Java Discussion :

Télécharger un fichier depuis une applet


Sujet :

Applets Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Télécharger un fichier depuis une applet
    salut

    je dois télécharger un fichier mp3 depuis une applet, ce fichier se trouvant sur le serveur web d'où l'applet est téléchargée par le navigateur. Donc normalement pas de probleme de sécurité. De fait, le fichier est bien trouvé et le transfert des données est commencé. Par contre, le InputStream que j'obtiens ne me retourne qu'une petite partie du fichier avant d'etre épuisé ?!
    En gros, mon fichier mp3 fait environ 1Mo, et je n'en récupere que 30Ko !

    voici le code chargé de récupérer le fichier, sous forme d'un byte[]

    filePath est le nom du fichier, fileSize sa taille (donnés à l'applet par les paramètres du tag <APPLET>)

    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
     
    private void loadSoundFile(String filePath, int fileSize) throws MalformedURLException, IOException{
     
    		byte[] playBackData;		// pour stocker le fichier 		
    		URL url = new URL(getCodeBase().toString() + filePath);		
    		InputStream inputStream = url.openStream();
     
    		if (inputStream != null){
    			playBackData = new byte[fileSize];
     // compter les données lues
    			int count = inputStream.read(playBackData);
    // ici, count vaut un nombre largement inférieur à la taille du fichier !!!
     
    // on place les données dans un attribut de la classe
    			this.playBackData = playBackData; 
    		}
    	}

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2005
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Philippines

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 244
    Points : 609
    Points
    609
    Par défaut
    Euuuuuh il faudrait que tu te renseigne sur les protocoles HTTP, je ne suis pas sur que ceux ci t'envoie les données en un seul morceaux, je parierai sur divers paquets... de 30ko

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    en fait, j'ai déjà fait ce test avec des fragments de 1ko, sans succes. J'ai aussi changé le fichier mp3, sait on jamais. J'avoue que je n'ai aucune idée de ce qui se passe. En gros, dès que j'obtiens le inputStream, un appel à la méthode available() me retourne une valeur autour de 30000. Cette méthode indique justement le nb d'octets dispo dans le stream.

    J'ai aussi testé la méthode getResourceAsStream de JApplet, et là, je prends une exception "Stream closed" !

    bref, c'est la grande déroute !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    personne n'a donc d'idée ?

    Au cas où, je précise que j'héberge chez free...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    ok j'ai trouvé

    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
     
    public void loadSoundFile() throws InterruptedException,
    			MalformedURLException, IOException {
     
    		byte[] playBackData; // tout le mp3
    		byte[] buffer; // une lecture sur le stream
     
    		URL url = new URL(getCodeBase().toString() +     this.playBackPath);
    		URLConnection connection = url.openConnection();
    		InputStream inputStream = connection.getInputStream();
     
    		int contentLength = connection.getContentLength();
    		playBackData = new byte[contentLength];
     
    		int byteRead = 0; // nb total d'octets lus
    		int pos = 0; // indice dans playBackData
     
    		// transfert des données
    		while (byteRead < contentLength) {
    			if (inputStream.available() <= 0) {
    				Thread.sleep(500);
    				continue;
    			}
     
    			buffer = new byte[inputStream.available()];
    			int cnt = inputStream.read(buffer);
     
    			// transfert des données dans playBackData
    			for (int i = 0; i < cnt; i++) {
    				playBackData[pos++] = buffer[i];
    			}
     
    			byteRead += cnt;
    		}
    	}
    en fait, dans la première version, les octets n'étaient simplement pas disponibles sur l'inputstream parce que pas téléchargés...

    ce code fonctionne correctement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Télécharger un fichier depuis une repartoire web
    Par guigui69 dans le forum VBScript
    Réponses: 1
    Dernier message: 05/04/2013, 22h40
  2. Ouvrir un fichier depuis une applet
    Par julie4207 dans le forum Applets
    Réponses: 1
    Dernier message: 20/12/2008, 06h23
  3. Télécharger des fichiers depuis une URL
    Par nicox33 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/01/2008, 18h33
  4. [applet] créer un fichier depuis une applet.
    Par BouB dans le forum Applets
    Réponses: 12
    Dernier message: 02/04/2007, 06h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo