【问题标题】:c# zip file creation raising error file not foundc# zip文件创建引发错误文件未找到
【发布时间】:2022-01-20 06:13:11
【问题描述】:

我们正在尝试使用 C# Ionic zip 库保存 zip 文件。但它似乎给出了找不到文件的错误。

System.IO.FileNotFoundException: 'Could not find file 'PhysicalPath\JobPortal\Job\DownLoadSelectedFiles'.'

代码如下:

public ActionResult DownLoadSelectedFiles(string applicantIds)
        {
            List<ApplicantList> listapplicant = _applicantBl.GetFileNames(applicantIds); 
                    MemoryStream ms = new MemoryStream();

                    using (ZipFile zip = new ZipFile())
                    {
                        foreach (ApplicantList t in listapplicant)
                        {
//t.FileName is relative path
                            zip.AddFile(Server.MapPath(t.FileName),"CVs");
                                     
                        }

                        zip.Save(ms); // this line generates error
                    }
                    ms.Seek(0, SeekOrigin.Begin);
                    return File(ms.ToArray(), "application/zip");
           }

任何帮助表示赞赏

【问题讨论】:

  • Server.MapPath 将逻辑目录映射到物理目录路径。它不会将相关文件名(相对于什么?)映射到绝对文件系统路径。
  • 我认为您的行 Server.MapPath(t.FileName) 没有给出您期望的值。尝试将其输出到控制台或添加手表
  • @KlausGütter 这是一个 MVC 应用程序,文件存储在 Web 应用程序的根文件夹中。据我了解, zip.add 的第一个参数是我们要添加的文件的路径。如果我弄错了,请指导\
  • server.mappath 给 C:\AppPath\JobPortal\Images\ApplicantResume\637750273214460912.pdf

标签: c# asp.net-mvc ionic-zip


【解决方案1】:

问题已解决。似乎只需要添加一个检查文件是否物理存在。

if(Sytem.IO.File.FileExists(Server.MapPath(t.FileName))
{

  zip.AddFile(Server.MapPath(t.FileName),"CVs");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多