2012-02-04 6 views
2

я пытаюсь удалить файл после загрузки file.My кодахотят альтернативу Response.End()

private void DownloadZipFileDialogue(string strZipFilePath) 
{ 
    Response.ContentType = "application/octet-stream"; 
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(strZipFilePath)); 
    Response.TransmitFile(strZipFilePath); 
    Response.End(); 
    //File.Delete(strZipFilePath); 
} 

Я знаю, что после Response.End(); нет коды блока не execute.If я пытаюсь удалить файл Befor Response.End(); почтового файла поврежден. Я ищу каждый раз. Я пытаюсь:
ApplicationInstance.CompleteRequest();
вместо
Response.End();.
Но я получаю тот же результат.zip-файл поврежден. Я вижу это Is Response.End() considered harmful?, но не может найти решение. Любая идея для решения проблемы. Спасибо.

+0

Вы можете запустить таймер, который после 1 второго удаления файла. – Aristos

ответ

1

Вы можете попробовать это,

private void DownloadZipFileDialogue(string strZipFilePath) 
{ 
    Response.ContentType = "application/octet-stream"; 
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(strZipFilePath)); 

    using(Stream input = File.OpenRead(strZipFilePath)){ 

     /// .NET 4.0, use following line if its .NET 4 project 
     input.CopyTo(Response.OutputStream); 

     /// .NET 2.0, use following lines if its .NET 2 project 
     byte[] buffer = new byte[4096]; 
     int count = input.Read(buffer,0,buffer.Length); 
     while(count > 0){ 
      Response.OutputStream.Write(buffer,0,count); 
      count = input.Read(buffer,0,buffer.Length); 
     } 
    } 

    File.Delete(strZipFilePath); 
} 
+0

сделать это немного ясно. Как я использую его вместо моего метода. Спасибо. –

+0

Я получаю: FIle поврежден и не может быть открытым сообщением об ошибке. Пожалуйста помоги. – Pearl

Смежные вопросы