C#从URL读取文件信息

时间:2013-12-05 07:10:40

标签: c# asp.net file url

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

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

那么如何从URL获取文件的最后写入时间而无需为每个循环下载完整文件?

2 个答案:

答案 0 :(得分:4)

假设你的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.
    }
}

当此方法不起作用时,因为服务器不允许它。然后,唯一的方法是完全下载文件。

答案 1 :(得分:0)

我担心你不能。

当它是您要下载的网页时,您可能希望服务器正确设置LastModified的{​​{1}}属性以获取上次修改页面的日期。但即使这不是你总能依赖的东西。

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