我在C#开发的Web中作了个报表系统
客户端点击统计后,先在服务器端生成一个excel文件,然后提示用户下载。但是用户下载完成后我怎么删除这个服务器端的文件呢也就是说我想扑捉到用户下载完成,或者取消下载的地方,好删除服务器端的临时文件。
谢谢
以下是提供下载的相关代码。我该怎么做,才能及时地把服务器端的临时文件删除呢
System.IO.FileInfo file = new System.IO.FileInfo(path);System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Charset="GB2312";
System.Web.HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.UTF8;
// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpContext.Current.Server.UrlEncode(file.Name));
// 添加头信息,指定文件大小,让浏览器能够显示下载进度
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());// 指定返回的是一个不能被客户端读取的流,必须被下载
System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";
// 把文件流发送到客户端
System.Web.HttpContext.Current.Response.WriteFile(file.FullName);
// 停止页面的执行
System.Web.HttpContext.Current.Response.End();

解决方案 »

  1.   

    当客户端操作完成后,可以用socket或其他方式发送信息到服务端,让服务器删除文件
      

  2.   

    楼上的说的办法行。但是我估计 LZ生成excle的时候 使用了一个excle模板,是直接写文件的。
    要想删除,很简单
    别这种下 http://your.xls
    自己写个 服务端
    aspx啥的http://your.aspx 通过访问这个网页下 这样你就能控制服务器端发出的东西,删除也就不是问题,当然要是以某种流的形式发送 客户端也得做相应的接收。
      

  3.   

    TO diandian82(点点)、cancerser(新的可以)  :    我用C#不久,所以能否指点我怎么在内存中生成文件呢
    我是先有个Excel模版,打开模版,填写数据,然后另存到服务器某个文件夹,提供下载的
    怎么另存到内存中,又怎么让客户端下载呢??
    往不吝赐教。最好能详细点。因为这个任务很急。谢谢了
      

  4.   

    在内存中生成excle模板 俺不会,也是不现实的
    除非你的excle简单到能在客户端生成,而服务器端只给传数据就行。
    否则就得通过网页或服务下载这个文件以便删除。
    (俺就会这么多)
      

  5.   

    WriteFile有个重载
    WriteFile(string filename, bool readIntoMemory)
    将readIntoMemory设置为true,在WriteFile后增加删除文件的代码即可
      

  6.   

    有没有人帮忙啊。就是怎样把一个文件读取到内存中去阿。MemoryStream ms=new MemoryStream();
    怎么把文件读到MemoryStream中呢?
      

  7.   

    呵呵,楼主得补补.NET知识:IO(生成Excel为内存流),Web(将内存流直接输出供浏览器下载)都挺简单的。