web-dev-qa-db-fra.com

Création d'un fichier Zip avec ionic.zip

J'ai le code suivant configuré pour créer un fichier Zip d'un ensemble de doutes:

    public bool CreateDocumentationZipFile(int documentIdentifier, string zipDestinationPath, IList<string> documentPaths)        
    {
        bool zipped = false;

        if (documentPaths.Count > 0)
        {
            using (ZipFile loanZip = new ZipFile())
            {
                loanZip.AddFiles(documentPaths, false, zipDestinationPath);
                loanZip.Save(string.Format("{0}{1}.Zip",zipDestinationPath, documentIdentifier.ToString()));
                zipped = true;
            }
        }

        return zipped;
    }

Le problème que j'ai est que lorsque le fichier Zip est créé, la structure des dossiers est maintenue dans le fichier Zip:

par exemple

Je crée un Zip d'une sélection de documents situés sur

C:\SoftwareDevelopment\Branches\ScannedDocuments \

Lorsque le fichier Zip créé est ouvert, il existe une structure de dossiers dans le Zip comme suit:

Dossier 1 ("SoftwareDevelopment")

Le dossier intérieur 1 est le dossier 2 ("Branches")

Dans le dossier 2 se trouve le dossier 3 ("Documents numérisés")

le dossier des documents numérisés contient alors les fichiers de numérisation réels.

Quelqu'un peut-il me dire comment je peux simplement avoir les fichiers numérisés dans le Zip sans que le chemin des dossiers soit conservé?

15
Richard.Gale

documentation indique que le troisième paramètre

directoryPathInArchive (String)
Spécifie un chemin de répertoire à utiliser pour remplacer tout chemin dans le nom de fichier. Ce chemin peut correspondre ou non à un véritable répertoire du système de fichiers actuel. Si les fichiers du Zip sont extraits ultérieurement, il s'agit du chemin utilisé pour le fichier extrait. Passer null (Nothing en VB) utilisera le chemin d'accès sur chacun des FileNames, le cas échéant. Passer la chaîne vide ("") insérera l'élément au chemin racine dans l'archive.

Donc, si vous voulez toujours que les fichiers soient ajoutés à la racine de votre archive Zip, changez

loanZip.AddFiles(documentPaths, false, zipDestinationPath);

à

loanZip.AddFiles(documentPaths, false, "");
19
Treb