[英]When to delete generated file using asp.net
我有一個模板excel文件,可以從中生成excel文件。
我的代碼如下(這部分是從模板創建一個新的excel文件):
string currentFN = PropertyFinalResult[0].Fecha;
string fixCurrentFN = currentFN.Replace('/', '_');
string currentTime = DateTime.Now.ToLongTimeString();
string fixCurrentTime = currentTime.Replace(':', '_');
string addToFileName = fixCurrentTime.Replace(' ', '_');
string newFN = fixCurrentFN + "-" + addToFileName;
string SourceFile = Request.PhysicalApplicationPath + "Template\\ExcelTemplate.xlsx";
string DestFile = Request.PhysicalApplicationPath + "Template\\" + newFN + ".xlsx";
//To keep FileName for posterior deletion
Session["sDestFile"] = DestFile;
try
{
File.Copy(SourceFile, DestFile);
}
catch (Exception ex)
{
lblErrorSavingToDB.Text = "Error: " + ex.Message;
lblErrorSavingToDB.Visible = true;
}
之后,我打開新的excel文件,將記錄插入其中,然后通過執行以下操作將文件流式傳輸給用戶:
//Streaming file to client
string fileName = newFN + ".xlsx";
Response.Redirect("../Template/" + fileName);
現在,我的問題是,用戶是否保存文件,何時刪除生成的文件? 我希望用戶關閉有關“打開”或“保存文件”的彈出窗口。 但是如何知道用戶何時關閉該窗口?
您可以使用TransmitFile
,然后在傳輸結束后關閉。 例:
try
{
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment;filename=\"" + Path.GetFileName(path.FullName) + "\"");
Response.AddHeader("content-length", path.Length.ToString());
Response.TransmitFile(path.FullName);
Response.Flush();
}
finally
{
File.Delete(Server.MapPath("~/"+tpacode+".zip"));
}
何時刪除文件(或者最好說“保留文件多長時間”)是一個最好由應用程序的業務規則回答的問題。
過去,在低流量應用程序中,我使用“清理”例程刪除早於特定閾值的文件。 創建新文件時將執行該清理,屆時指定文件夾中早於閾值的任何文件都將被刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.