Asp.net mvc 4 下载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

我想下载zip格式的文件,但我收到了一个错误,我的代码和错误如下所示

我的代码:

        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();
    }