aspx ページに C# コードを使用しています。複数のファイルを、Windows の既定の zip ソフトウェアで読み取り可能な単一の zip ファイルに変換する必要があります。
誰でもそれについて考えることはできますか...?
このチュートリアルを参照してください: .NET での Zip アーカイブの作成 (SharpZipLib などの外部ライブラリなし)
ZipFile zip= new ZipFile("MyNewZip.zip");
zip.AddDirectory("My Pictures", true); // AddDirectory recurses subdirectories
zip.Save();
または、SharpZipLibを使用できます。
のような無料のライブラリを使用します
//このライブラリ 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);
}
}
DotNetZipは、ライセンスの問題がない優れたオープン ソースです。