我在服务器端根据数据库中的数据 临时生成了一个Word文档,然后客户端发出请求时就会下载这个生成的文件,
我想做到的是当客户端下载完文件时,就把这个文件从服务器端的临时目录删除
(我觉得有这个必要 ,因为随着数据库中相应数据的增多 ,生成的word 文档会越来越大,如果不及时清理的话,硬盘空间迟早会被它占据) ,
另外,我用了struts2 ,
如何知道客户端已经下载完,struts2 有没有能监控这种事件的行为另外,一个解决方法是定时清理临时目录 ,但又如何确定某个文件不会被用到,可以被删 除,

解决方案 »

  1.   

    写一个filter,拿到用户下载的url,然后截获文件名,进行删除!
      

  2.   

    对于临时文件,下载完毕以后调用!
    file.ondelete();
      

  3.   

    在客户端需要下载的时候生成这个文件,然后以流的方式写入response.供用户下载,写完的时候(而不是下载完),在finally块中写删除该文件的语句.
      

  4.   

    写一个filter,拿到用户下载的url,然后截获文件名,进行删除!
      

  5.   

    最终我是采用quartz 定时清理tmp 目录里的文件,但是我用到了struts2 中 
    <result name="success" type="stream">
      <param name="contentType">image/jpeg</param>
      <param name="inputName">imageStream</param>
      <param name="contentDisposition">attachment;filename="document.pdf"</param>
      <param name="bufferSize">1024</param>
    </result>在类里我只要定义一个Inputstream imageStream     ,并且
    service.service(){
    return new FileInputStream(wordFile);
    }Action (){
    Inputstream imageStream  ;
    setter,getter..
    execute(){
    imageStream  =service.service();
    也就是说在此处没法拿到wordFile  这个文件名 ,只根据imageStream   这个输入流好像没法删除这个文件
    }
    }