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

Langage Java Discussion :

Envoi de gros fichiers via le OutputStream d'une URLConnection


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut Envoi de gros fichiers via le OutputStream d'une URLConnection
    Bonjour à tous !

    Je cherche à envoyer une grande quantité de données (>100Mo) via le OutputStream d'une HttpURLConnection. Pour éviter une "OutOfMemoryException" j'écris des paquets d'octets d'une taille de bufferSize octets... Et je flush mon outputStream afin qu'il n'y ait pas de dépassement de mémoire (a priori).

    Voilà mon code :

    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
     
    FileInputStream reader = new FileInputStream(file);
     
    byte[] buff = new byte[bufferSize];
     
    int readBytesNb;
    byte[] readBytes;
    while ((readBytesNb = reader.read(buff)) != -1) {
    	if (readBytesNb == bufferSize) 				
    		outputStream.write(buff); // ici une OutOfMemoryException
    	        outputStream.flush();
    	} else {
                    // Le dernier paquet n'est pas plein
    		readBytes = new byte[readBytesNb];
    		System.arraycopy(buff, 0, readBytes, 0, readBytesNb);
    		outputStream.write(readBytes);
    	}
    }
     
    reader.close();
    Le problème, c'est que j'obtiens quand même une "OutOfMemoryException" (à l'endroit signalé d'un "ici"), à croire que, malgré mon flush(), le contenu de mon OutputStream est toujours gardé en mémoire...

    Auriez-vous une solution à m'apporter s'il vous plaît ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Par défaut
    Ou bien existe-t-il un autre moyen de poster de gros fichiers en utilisant le protocole HTTP ?

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Dirige toi vers la librairie HTTPClient des commons apache. La classe HttpURLConnection de Sun est mal foutue en ce qui concerne les gros transferts. (grosso merdo elle garde tout en mémoire et envoie le content length qui lui est totalement accessoire).

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur d'études J2EE
    Inscrit en
    Avril 2009
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études J2EE

    Informations forums :
    Inscription : Avril 2009
    Messages : 82
    Par défaut
    Merci, c'est ce que je me disais aussi...

Discussions similaires

  1. [WS 2008] Permission refusée lors de l'envoi de gros fichiers en SMB
    Par kedare dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 08/12/2009, 16h10
  2. Envoi de gros fichier
    Par guiguiom dans le forum Serveurs (Apache, IIS,...)
    Réponses: 3
    Dernier message: 17/06/2008, 16h25
  3. Perte de $_POST lors d'envoi de gros fichiers
    Par jpascal dans le forum Langage
    Réponses: 3
    Dernier message: 31/03/2008, 13h58
  4. [Upload] Envoi de gros fichiers
    Par zevince dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2007, 17h11
  5. Copie de gros fichiers via vpn
    Par gretch dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 27/09/2007, 15h34

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