sum*_*ulb 6 c# asp.net ajaxcontroltoolkit
我有一个Web表单,允许用户在我们的系统中打开票证时上传文件.使用"ajax控件工具包"asyncFileUpload控件完成上载.
我们的想法是将文件保存到临时目录,并在用户点击"提交"按钮时将它们保存到永久位置.
我希望能够摆脱不再相关的临时文件(例如,用户离开页面一个月而不发布表单).
什么是不永远保存临时文件的最佳方法.也许将它们保存在会话中?也许让他们保持在观察状态?
我可以在超时时向页面添加一些JS,并添加一些在用户离开页面时运行的代码.但这些想法是客户端解决方案.我不希望有人篡改代码并在我的系统上留下垃圾.
还有其他想法吗?
谢谢,Summerbulb
也许将它们保存在会话中?
不会.这会不必要地使用大量服务器内存,用户可能会通过上传大文件对整体服务器性能产生负面影响.
也许让他们保持在观察状态?
不会.这实际上意味着每个回发都会涉及无理由地再次上传(和下载)文件.应用程序性能会显着降低并提供糟糕的用户体验(更不用说通过带宽吃掉,这可能会花费你的钱).
这些文件存储在服务器上的临时位置,对吧?应用程序跟踪某种数据存储中的文件信息(我假设是一个SQL数据库)?我建议有一个单独的应用程序来处理清理工作,特别是因为你正在谈论一个月的规模.
Windows服务或计划的控制台应用程序可以正常工作.它可以定期检查目录和数据库,并根据您提供的规则执行一些清理.甚至可以使用票务系统中可能存在的任何消息传递机制来通知用户此操作,通知管理员等.
我的建议是在 Global.asax 中添加 On_SessionEnd 处理程序,并在用户会话结束时删除临时文件。您可以在命名临时文件时附加 SessionID(或者在前面添加 SessionID,无论您想要什么),这样您就只会删除会话已结束的用户的文件。您还可以将 On_Application_End 处理程序添加到 Global.asax 以删除临时目录中的所有文件。