0

そこから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);

さて、私の質問は、ユーザーがファイルを保存するかどうかに関係なく、生成されたファイルをいつ削除する必要があるかということです。ユーザーがファイルを開くまたは保存に関するポップアップウィンドウを閉じたら、私は好むでしょう。しかし、ユーザーがいつそのウィンドウを閉じたかを知るにはどうすればよいでしょうか?

4

2 に答える 2

3

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"));
                }
于 2013-01-25T18:52:45.843 に答える
1

ファイルをいつ削除するか (または、「ファイルを保持する期間」と言った方が適切かもしれません) は、アプリケーションのビジネス ルールによって最もよく答えられる質問です。

以前は、トラフィックの少ないアプリケーションで、「クリーンアップ」ルーチンを使用して、特定のしきい値よりも古いファイルを削除していました。そのクリーンアップは、新しいファイルが作成されたときに実行され、その時点で、指定されたフォルダー内のしきい値より古いファイルはすべて削除されます。

于 2013-01-25T18:54:51.540 に答える