Question

Dans ma demande, l'utilisateur sélectionne un gros fichier (> 100 Mo) sur leur route. Je souhaite que le programme puis prendre le fichier qui a été sélectionné et hacher en pièces archivées qui sont 100 Mo ou moins. Comment cela peut-il être fait? Quelles sont bibliothèques et le fichier format dois-je utiliser? Pourriez-vous me donner un exemple de code? Après la première partie archivée 100mb est créé, je vais le télécharger sur un serveur, alors je vais télécharger la partie suivante 100mb, et ainsi de suite jusqu'à ce que le téléchargement soit terminé. Après cela, à partir d'un autre ordinateur, je téléchargerai toutes ces parties archivées, puis je souhaite les connecter dans le fichier original . Est-ce possible avec les bibliothèques 7zip, par exemple? Merci!

Mise à jour: De la première réponse, je pense que je vais utiliser SevenZipSharp, et je crois que je comprends maintenant comment découper un fichier en pièces archivées 100MB, mais j'ai encore deux questions:

  1. Est-il possible de créer la première partie archivée 100mb et télécharger avant de créer la partie suivante 100mb?
  2. Comment extraire un fichier avec SevenZipSharp de plusieurs archives dédoublées?

Mise à jour # 2: Je ne faisais que jouer avec l'interface graphique 7-zip et la création d'archives en plusieurs volumes / fractionnés, et je trouve que la sélection de la première et l'extraction de celui-ci va extraire l'ensemble fichier de toutes les archives de division. Cela me porte à croire que les chemins les parties suivantes sont incluses dans le premier (ou est-il consécutif?). Cependant, je ne sais pas si cela fonctionnerait directement à partir de la console, mais je vais essayer maintenant et voir si elle résout la question n ° 2 de la première mise à jour.

Était-ce utile?

La solution

Jetez un oeil à SevenZipSharp , vous pouvez l'utiliser pour créer votre broche 7z fichiers, faire tout vous voulez les télécharger, puis les extraire du côté du serveur.

Pour diviser l'apparence d'archives sur l'élément de SevenZipCompressor.CustomParameters, en passant « v100m ». (Vous pouvez trouver plus de paramètres dans le fichier 7-zip.chm de 7zip)

Autres conseils

Vous pouvez diviser les données en « paquets » 100MB d'abord, puis passer chaque paquet dans le compresseur à son tour, en prétendant qu'ils sont simplement des fichiers séparés.

Cependant, ce type de compression est généralement basée sur les flux. Tant que la bibliothèque que vous utilisez fera son E / S via une classe dérivée Stream, il serait assez simple à mettre en œuvre votre propre flux que « packetises » les données comme vous le souhaitez à la volée - que les données sont transmises en votre méthode Write () vous l'écrire dans un fichier. Lorsque vous dépassez 100MB dans ce fichier, il vous suffit de fermer ce fichier et d'ouvrir un nouveau, et continuer à écrire.

Chacune de ces approches vous permettra de télécharger facilement un « paquet » tout en continuant à compresser suivant.

modifier

Juste pour être clair -. Décompression est juste l'ordre inverse de ce qui précède, donc une fois que vous avez le travail de code de compression, décompression sera facile

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top