2016-07-05 145 views
0

我想要做的是创建一个zip文件并下载这些文件。 这里是我的控制器zip文件中的线程下载

 public FilePathResult Download(string Name) 
     { 
     string f1=null; 
     try 
     { 
      f1 = _dbBackupServiceService.DownloadBackupFile(Name); 

     } 
     catch (Exception ex) 
     { 

     } 

      return File(f1, "application/zip", Name + ".zip"); 
    } 

而且服务层看起来像这样

public string DownloadBackupFile(string Name) 
    { 

     string backupFolder = HttpContext.Current.Server.MapPath("~/DbBackup"); 
     string filePath = backupFolder + "\\" + Name; 
     string zipFilePath = filePath.Substring(0, (filePath.Length - 3)) + "zip"; 

     var backupFileName = Path.GetFileNameWithoutExtension(filePath); 
     var zipFileName = Path.GetFileName(zipFilePath); 

      if (File.Exists(zipFilePath)) 
     { 

     } 
     else 
     { 
      ZipArchive zip = ZipFile.Open(zipFilePath, ZipArchiveMode.Create); 
      zip.CreateEntryFromFile(filePath, Name); 



     } 
     return zipFilePath; 



    } 

我现在面临的问题是,而我对他们的zip文件则不会创建这些文件下载操作单击。处理器将在下载线程运行时持续创建zip文件,从而导致浏览器显示错误。而已经创建的zip文件可以成功下载。在下载发生之前,如何等待zip文件成功创建?

+0

通常会花费很多时间,让你的用户去,然后用电子邮件通知他邮编完成,这里是链接下载... – Aristos

回答

-1

请添加以下语句

Thread.Sleep(5000); //这将使线程休眠5秒钟。声明

zip.CreateEntryFromFile(文件路径,名称)后

;

如果您仍然遇到问题,请增加睡眠时间。

+0

什么是一个坏主意!躲开它 – Aristos