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

C# Discussion :

Zipper des fichiers en plusieurs parties


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Par défaut Zipper des fichiers en plusieurs parties
    Bonjour,

    j'aurais besoin de zipper des fichiers par paquet de 100Mo, mais je ne vois pas comment faire.
    Pour zipper en un seul fichier j'utilise la librairie SharpZipLib mais il me semble qu'elle ne permet pas de découper en plusieurs parties.

    Je voulais savoir si vous connaissez d'autres librairies qui pourraient m'aider.

    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    tu n'es pas obligé de passer par une lib externe, zip est natif en C#
    voir GZipStream
    Après à toi de régler le buffer...

    un exemple d'utilisation:
    C est pas le top du top de l'exemple... mais bon
    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
        public static class ZipHelper
        {
            public static string Compress(string text)
            {
                byte[] buffer = Encoding.UTF8.GetBytes(text);
                MemoryStream ms = new MemoryStream();
                using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
                {
                    zip.Write(buffer, 0, buffer.Length);
                }
     
                ms.Position = 0;
                MemoryStream outStream = new MemoryStream();
     
                byte[] compressed = new byte[ms.Length];
                ms.Read(compressed, 0, compressed.Length);
     
                byte[] gzBuffer = new byte[compressed.Length + 4];
                System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
                System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
                return Convert.ToBase64String(gzBuffer);
            }
        }

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Par défaut
    Oui je connais aussi GZipStream mais SharpZipLib était déjà utilisé où je travail, c'est pour ça que je l'ai mentionné. Il n'y a donc pas de librairie qui fait ça automatiquement ?

    Si j'ai bien compris, l'exemple que tu as donné sert à compresser des string; ce que je voudrais savoir est s'il est possible de compresser n'importe quel type de fichier par paquet de 100 Mo. Par exemple, si j'ai un fichier image de 50 Mo et une vidéo de 75 Mo, est ce possible de faire un zip de 100 Mo avec l'image et une partie de la vidéo et un deuxième avec le restant de la vidéo ?

    Merci.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    De mémoire GZipStream ne gère que qu'un seul fichier.

    Tu peux les mettres un a un à la suite de l'autre dans ton stream, mais bonne chance pour savoir où ils commencent et finissent. Tu vas devoir gérer ton propre index que tu mets à la fin de ton stream.

  5. #5
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    S'il est possible d'utiliser une autre implémentation, je suggère DotnetZip qui est bien plus naturelle à appréhender que SharpZlib.

Discussions similaires

  1. Zipper des fichiers en plusieurs fichiers zip selon la taille.
    Par kaygee dans le forum Développement Windows
    Réponses: 0
    Dernier message: 15/01/2015, 11h27
  2. Zipper des fichiers a la volé
    Par fatichcadao dans le forum ASP.NET
    Réponses: 7
    Dernier message: 18/09/2007, 12h39
  3. Copier_Coller et zipper des fichiers en même tps
    Par clemasson dans le forum ASP
    Réponses: 4
    Dernier message: 18/07/2007, 10h23
  4. zipper des fichiers
    Par indoparadize dans le forum C++
    Réponses: 6
    Dernier message: 17/08/2006, 14h56
  5. [ZIP] zipper des fichiers de plus d'un mega
    Par sylviefrfr dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/10/2005, 14h40

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