0

aspx ページに C# コードを使用しています。複数のファイルを、Windows の既定の zip ソフトウェアで読み取り可能な単一の zip ファイルに変換する必要があります。

誰でもそれについて考えることはできますか...?

4

4 に答える 4

7

このチュートリアルを参照してください: .NET での Zip アーカイブの作成 (SharpZipLib などの外部ライブラリなし)

ZipFile zip= new ZipFile("MyNewZip.zip"); 
zip.AddDirectory("My Pictures", true); // AddDirectory recurses subdirectories
zip.Save(); 

または、SharpZipLibを使用できます。

于 2011-03-07T07:40:56.697 に答える
3

のような無料のライブラリを使用します

http://www.sharpdevelop.net/OpenSource/SharpZipLib/

于 2011-03-07T07:41:13.827 に答える
1

//このライブラリ SharpZipLib を使用します。
これを使用すると、ユーザーが選択した複数のファイルを送信して圧縮し、クライアントで指定した物理パスに保存できます。

public string zipfile(string[] files)
    {


        string[] filenames = new string[files.Length];


            for (int i = 0; i < files.Length; i++)
                filenames[i] = HttpContext.Current.Request.PhysicalApplicationPath + files[i].Remove(0, 10// set it according to your filename).ToString();
        else
            for (int i = 0; i < files.Length; i++)
                filenames[i] = HttpContext.Current.Request.PhysicalApplicationPath + files[i].Replace(HttpContext.Current.Request.UrlReferrer.ToString(), "");
        string DirectoryName = filenames[0].Remove(filenames[0].LastIndexOf('/'));
        DirectoryName = DirectoryName.Substring(DirectoryName.LastIndexOf('/') + 1).Replace("\\", "");

        try
        {

            string newFile = HttpContext.Current.Request.PhysicalApplicationPath + "the physical path where you want to save it" + DirectoryName + ".zip";
            if (File.Exists(newFile))
                File.Delete(newFile);
            using (ZipFile zip = new ZipFile())
            {

                foreach (string file in filenames)
                {

                    string newfileName = file.Replace("\\'", "'");
                    zip.CompressionLevel = 0;
                    zip.AddFile(newfileName, "");
                }

                zip.Save(newFile);
            }
        }
于 2011-03-07T09:18:23.607 に答える
1

DotNetZipは、ライセンスの問題がない優れたオープン ソースです。

于 2011-03-07T07:45:44.607 に答える