ASP.存储临时文件

本文关键字:临时文件 存储 ASP | 更新日期: 2023-09-27 18:06:25

我有一个web表单,允许用户在我们的系统中打开票证时上传文件。使用"ajax控件工具包"asyncFileUpload控件完成上传。

这个想法是将文件保存到临时目录,只有当用户点击"提交"按钮时才将它们保存到永久位置。

我希望能够摆脱不再相关的临时文件(例如,用户离开页面打开一个月而不张贴表单)。

不永久保存临时文件的最好方法是什么?也许会在会议上保留文件?也许将它们保存在视图状态中?

我可以添加一些JS到一个超时的页面,并添加一些代码,当用户离开页面时运行。但这些想法都是客户端解决方案。我不希望有人篡改代码,在我的系统上留下垃圾。

还有别的主意吗?

谢谢,Summerbulb

ASP.存储临时文件

也许在会话中保留它们的文件?

。这将不必要地使用大量的服务器内存,并且用户上传大文件可能会对服务器的整体性能产生不利影响。

也许让它们保持在视图状态?

。这实际上意味着每次回发都会无缘无故地再次上传(下载)文件。应用程序的性能会显著变慢,并提供糟糕的用户体验(更不用说占用带宽,这可能会花费您的钱)。


文件存储在服务器上的一个临时位置,对吗?应用程序跟踪某种类型的数据存储(假设是SQL数据库)中的文件信息吗?我建议使用一个单独的应用程序来处理清理工作,特别是考虑到您谈论的是一个月的规模。

一个Windows服务或预定的控制台应用程序就可以很好地完成这项工作。它可以定期检查目录和数据库,并根据您给它的任何规则执行一些清理。甚至可以使用票务系统中存在的任何消息传递机制来通知用户此操作,通知管理员等。

我的建议是在全局中添加On_SessionEnd处理程序。当用户会话结束时,Asax并删除临时文件。您可以将临时文件命名为附加SessionID的文件(或者附加SessionID,任何您想要的),这样您只会删除会话已经结束的用户的文件。您还可以向Global添加On_Application_End处理程序。删除临时目录下的所有文件。

您可以将文件存储在用户的临时文件夹中。在您的特定场景中,这是否是一个好方法,我不能肯定:

var dir = System.IO.Path.GetTempPath();

路径将取决于当前(Windows)用户。

http://msdn.microsoft.com/en-us/library/system.io.path.gettemppath.aspx

在提交时可以发出System.IO.File.Move()命令。剩下的文件可以通过服务或控制台应用程序删除,如果你有访问服务器的权限的话。