2016-07-05 33 views
0

私がやっていることは、zipファイルを作成し、それらのファイルをダウンロードすることです。 は、ここでまた、サービス層が、私はZIPファイルに作成されていないこれらのファイルのダウンロードアクションをクリックしている間、私が直面しています問題がある。この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; 



    } 

のように見える私のコントローラ

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

     } 
     catch (Exception ex) 
     { 

     } 

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

です。ダウンロードスレッドが実行され、ブラウザがエラーを表示すると、プロセッサはzipファイルを継続的に作成します。すでに作成されているzipファイルは正常にダウンロードされます。ダウンロードが行われる前にzipファイルが正常に作成されるまで待つことはできますか?

+0

通常、多くの時間がかかりますが、ユーザーに知らせて、後でそのメールにジップが完了していることを知らせてください。ここにダウンロード用のリンクがあります... – Aristos

答えて

-1

次の文を追加してください。

Thread.Sleep(5000); //これにより、スレッドは5秒間スリープ状態になります。声明

zip.CreateEntryFromFile(filePathに、名前)の後

問題が解決しない場合は、スリープ時間を長くしてください。

+0

何が悪い考えですか!それを避ける – Aristos

関連する問題