【问题标题】:revoke and delete file after specific time asp.net mvc [closed]在特定时间后撤消和删除文件 asp.net mvc [关闭]
【发布时间】:2016-12-12 09:50:38
【问题描述】:

我已经在我的网站上实现了文件上传,并以这种方式为用户创建了一个下载链接:[(Random GUID).(File Extensions)]

我想撤销生成的下载链接并在 10 分钟后删除上传的文件,或者在第一次下载请求后撤销下载链接。

我怎样才能做到这一点?

【问题讨论】:

  • 欢迎来到 Stackoverflow!您能否添加一些详细信息,您如何尝试实现这一点?比如:你想使用后台工作线程来删除文件吗?您想如何持久化哪些文件在哪些时间无效?你在使用数据库吗?

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

要删除文件,您需要编写一个 Windows 服务来轮询文件,或者如果您想保持它非常基本,您可以在每次页面加载时检查旧文件。

这是基本版本:

当用户请求下载时,检查目标目录中所有文件的创建日期。如果文件超过 10 分钟 - 删除它。清理完文件后,就可以简单检查一下用户请求的目标文件是否仍然存在

您可以使用以下方法检查创建日期和删除文件:

        string[] files = System.IO.Directory.GetFiles(@"C:\_Temp", "*.txt");
        foreach (string file in files) {
            DateTime creation = System.IO.File.GetCreationTime(file);
            if (((TimeSpan)(DateTime.Now - creation)).TotalMinutes > 10) {
                System.IO.File.Delete(file);
            }
        }

注意:确保目标目录中没有任何重要文件。更改“*.txt”以匹配您上传文件的文件格式。

接下来,检查请求的文件是否仍然存在:

if (File.Exists(@"C:\test.txt")) { 
    // process file here
}

希望有帮助:)

【讨论】:

    猜你喜欢
    • 2012-03-27
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2017-04-17
    相关资源
    最近更新 更多