从ASP.Net删除应用程序临时文件

时间:2009-07-21 05:03:02

标签: asp.net

我有一个WebPage,我可以选择将表单数据导出为PDF。我在运行时创建PDF并将PDF存储在我的应用程序目录下的“PDF”文件夹中。使用SessionID名称创建PDF后,我调用以下函数在新浏览器窗口中显示PDF文件:

ResponseHelper.Redirect(响应,“〜/ PDF /”+ Session.SessionID +“。pdf”,“_ Blank”,“”);

此PDF包含与登录用户相关的私人信息。因此,我希望有一种方法可以在浏览器中向用户显示该PDF文件后将其删除。这是因为IIS服务器允许整个开发团队查看此文件夹,这是一个安全风险,我们不能禁止用户在服务器上查看此文件夹。

因此,如果我在浏览器中加载此文件后立即将其删除,则可能是此安全风险的解决方案。

有人可以尽快建议一些更好的方法来删除此文件吗?

谢谢, 普利文

2 个答案:

答案 0 :(得分:1)

我猜您是在运行时使用Itext创建PDF文件,然后将该PDF文件保存在临时目录中以向用户显示...为什么不使用

Response.WriteFile(PDFFILE);

这将在流上写入整个文件而不将其保存在临时文件夹中。

答案 1 :(得分:0)

一种方法是编写一个ashx处理程序,将pdf流式传输到浏览器,然后在完成后将其删除。

另一种更好的方法是简单地在内存中构建PDF(不使用会话),并在准备就绪后立即流式传输。

<强>更新

我正在使用稍微修改过的iTextSharp版本。基本上,iTextSharp在内存中执行了所有操作,然后将文件保存到磁盘。我改变了这个以返回内存流。所有的代码都已经存在,它实际上只是一两行必须改变。

然后,我使用response.binarywrite将流直接推送到浏览器。中提琴!磁盘上没有文件。

ashx处理程序就像一个aspx页面,只有一个入口点,并没有完成所有的页面处理垃圾。它重量很轻,并通过response.write调用与浏览器通信。