【发布时间】:2011-03-07 07:39:59
【问题描述】:
我正在为 aspx 页面使用 C# 代码。我需要将多个文件转换为 Windows 默认 zip 软件可以读取的单个 zip 文件。
任何人都可以对此有所了解吗...?
【问题讨论】:
-
如果您编写了自己的代码,也许您可以发布它,这样您就可以轻松地为单个文件执行此操作了。
-
你能告诉你如何发送多个文件,你是通过 URL 来做的吗?
我正在为 aspx 页面使用 C# 代码。我需要将多个文件转换为 Windows 默认 zip 软件可以读取的单个 zip 文件。
任何人都可以对此有所了解吗...?
【问题讨论】:
查看本教程:Creating Zip archives in .NET (without an external library like SharpZipLib)
ZipFile zip= new ZipFile("MyNewZip.zip");
zip.AddDirectory("My Pictures", true); // AddDirectory recurses subdirectories
zip.Save();
或者你可以使用SharpZipLib。
【讨论】:
【讨论】:
DotNetZip 是一款优秀的开源软件,没有任何许可问题。
【讨论】:
//使用这个库 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);
}
}
【讨论】: