簡體   English   中英

ASP.NET - 存儲臨時文件

[英]ASP.NET - Store Temporary Files

我有一個Web表單,允許用戶在我們的系統中打開票證時上傳文件。 使用“ajax控件工具包”asyncFileUpload控件完成上載。

我們的想法是將文件保存到臨時目錄,並在用戶點擊“提交”按鈕時將它們保存到永久位置。

我希望能夠擺脫不再相關的臨時文件(例如,用戶離開頁面一個月而不發布表單)。

什么是不永遠保存臨時文件的最佳方法。 也許將它們保存在會話中? 也許讓他們保持在觀察狀態?

我可以在超時時向頁面添加一些JS,並添加一些在用戶離開頁面時運行的代碼。 但這些想法是客戶端解決方案。 我不希望有人篡改代碼並在我的系統上留下垃圾。

還有其他想法嗎?

謝謝,Summerbulb

也許將它們保存在會話中?

不會。這會不必要地使用大量服務器內存,用戶可能會通過上傳大文件對整體服務器性能產生負面影響。

也許讓他們保持在觀察狀態?

不會。這實際上意味着每個回發都會涉及無理由地再次上傳( 下載)文件。 應用程序性能會顯着降低並提供糟糕的用戶體驗(更不用說通過帶寬吃掉,這可能會花費你的錢)。


這些文件存儲在服務器上的臨時位置,對吧? 應用程序跟蹤某種數據存儲中的文件信息(我假設是一個SQL數據庫)? 我建議有一個單獨的應用程序來處理清理工作,特別是因為你正在談論一個月的規模。

Windows服務或計划的控制台應用程序可以正常工作。 它可以定期檢查目錄和數據庫,並根據您提供的規則執行一些清理。 甚至可以使用票務系統中可能存在的任何消息傳遞機制來通知用戶此操作,通知管理員等。

我的建議是在Global.asax中添加一個On_SessionEnd處理程序,並在用戶會話結束時刪除臨時文件。 您可以將附加SessionID的臨時文件命名為它們(或者根據需要添加SessionID),這樣您只會刪除會話結束的用戶的文件。 您還可以向Global.asax添加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()命令。 如果您有權訪問服務器,則可以使用服務或控制台應用程序刪除其余文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM