Asp.net mvc 4 下载Zip格式的文件
我想下载zip格式的文件,但我收到了一个错误,我的代码和错误如下所示 我的代码:Asp.net mvc 4 下载Zip格式的文件,asp.net-mvc-4,Asp.net Mvc 4,我想下载zip格式的文件,但我收到了一个错误,我的代码和错误如下所示 我的代码: using (ZipFile zip = new ZipFile()) { zip.AlternateEncodingUsage = ZipOption.AsNecessary; zip.AddDirectoryByName("Files"); //foreach (GridViewRow row in Gri
using (ZipFile zip = new ZipFile())
{
zip.AlternateEncodingUsage = ZipOption.AsNecessary;
zip.AddDirectoryByName("Files");
//foreach (GridViewRow row in GridView1.Rows)
//{
// if ((row.FindControl("chkSelect") as CheckBox).Checked)
// {
// string filePath = (row.FindControl("lblFilePath") as Label).Text;
// zip.AddFile(filePath, "Files");
// }
//}
DirectoryInfo directory = new DirectoryInfo(Server.MapPath(@"~\Election\Latur"));
var files = directory.GetFiles().ToList();
foreach (var file in files)
{
zip.AddFile(file.ToString(),"Files");
}
Response.Clear();
Response.BufferOutput = false;
string zipName = String.Format("Zip_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "attachment; filename=" + zipName);
zip.Save(Response.OutputStream);
Response.End();
}
当我在zip中使用上述代码下载文件时,出现以下错误
错误
此错误有两个可能原因: 1-无法创建目录“文件”(权限被拒绝) 2-无法将文件获取到“~\Election\Latur” 不管怎样,台词: var files=directory.GetFiles().ToList()
foreach(文件中的var文件)
我认为类型var不适合这种情况。使用base64编码器的字符串更正确。我猜错误发生在
zip.AddFile(file.ToString(),“Files”)代码>?无bro,zip.Save(Response.OutputStream)中发生错误;感谢Adrinan,您的第二个解决方案是currect,即file.ToString()不包含完整路径var
很好-它只是意味着Visual Studio为您计算出了类型。
using (ZipFile zip = new ZipFile())
{
string folderpath = Server.MapPath(@"~\Election\Latur\");
zip.AlternateEncodingUsage = ZipOption.AsNecessary;
zip.AddDirectoryByName("Files");
DirectoryInfo directory = new DirectoryInfo(Server.MapPath(@"~\Election\Latur"));
var files = directory.GetFiles().ToList();
foreach (var file in files)
{
var filepath = folderpath + file.ToString();
zip.AddFile(filepath,"Files");
}
Response.Clear();
Response.BufferOutput = false;
string zipName = String.Format("Zip_{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss"));
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "attachment; filename=" + zipName);
zip.Save(Response.OutputStream);
Response.End();
}