【问题标题】:C# Read file info from URLC# 从 URL 读取文件信息
【发布时间】:2013-12-22 00:27:49
【问题描述】:

在我的 ASP.NET MVC 应用程序中,我从 URL 读取外部文件并将其保存到服务器上的目录中。如果文件被修改,我每隔几秒钟循环执行一次以获得实际数据。

我需要认识到通过 URL 访问的文件的 LastWrittenTime 与已经下载到服务器的文件不同。我不能使用 FileInfo 类,因为“不支持 URI 格式”。

那么如何在不需要为每个循环下载完整文件的情况下从 URL 中获取文件的最后写入时间?

【问题讨论】:

  • 你是从文件还是浏览器地址栏读取url?

标签: c# asp.net file url


【解决方案1】:

假设您的 HTTP 服务器允许这样做。

System.Net.WebRequest req = System.Net.HttpWebRequest.Create("http:\\your\url.ext");
req.Method = "HEAD";
using (System.Net.WebResponse resp = req.GetResponse())
{
    DateTime LastModified;
    if(DateTime.TryParse(resp.Headers.Get("Last-Modified"), out LastModified))
    { 
        //Check if date is good and then go to full download method.
    }
}

当此方法因服务器不允许而不起作用时。这样做的唯一方法是完全下载文件。

【讨论】:

【解决方案2】:

恐怕你不能。

当您要下载的网页时,您可能希望服务器正确设置WebResponseLastModified 属性以获取页面最后修改的日期。但即使这也不是你可以一直依赖的。

当它是一个文件时,除非您将文件保存在自己的磁盘上,否则无法知道日期。 (就像您现在所做的那样。)即便如此,根据服务器设置,您可能会在您的光盘上获取文件的创建日期,而不是在您正在下载的服务器上。

【讨论】:

  • 取决于文件及其创建位置,假设他在服务器上创建它(因为他每隔这么多秒就下载一次)。然后最后修改日期将由服务器设置。
猜你喜欢
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
  • 2016-07-23
  • 2018-08-06
相关资源
最近更新 更多