2011-07-28 29 views
2

我正在写一个应用程序,只有当时间戳比现有的时间戳更新时,才会下载和替换PDF文件...如何使用c#查找在线pdf文件的时间戳?

我知道它可能读取本地文件的时间戳通过下面的代码行计算机,

MessageBox.Show(File.GetCreationTime("C:\\test.pdf").ToString()); 

是可以在线阅读的文件时的时间戳,无需下载它..?

回答

2

除非网站上包含文件的目录被配置为显示原始文件列表,否则无法通过HTTP获取文件的时间戳。即使使用原始列表,您也需要自己解析HTML以获取时间戳。

如果你有FTP访问文件,那么你可以这样做。如果只使用.NET Framework中内置的基本FTP功能,则仍然需要解析目录列表以获取日期。但是,有第三方FTP库可填补空缺,例如editFTPnet,您可在其中获得FTPFile class

更新时间:

根据注释:

如果我要建立与 手写的日期和文件名一个简单的HTML文件,我可以简单地看,要找出哪些文件 实际上已经更新并只下载所需的文件。是 是一个可行的办法..

这将是一种方法,或者如果你有可用的脚本(ASP.NET,ASP,PHP,Perl中,等等),那么你可以自动完成这一点,并有脚本获得文件的时间戳并为你渲染它们。或者你可以编写一个非常简单的Web服务,它返回一个JSON或XML blob,其中包含文件的时间戳,而不是一些HTML的解析麻烦。

+1

+1为问题提供了一个很好的替代解决方案,不只是说它不能完成 –

+0

@ kev:我在想,如果我要设置一个简单的html文件,并且手动编写日期和文件名,我可以简单阅读一下,找出哪些文件实际上已被更新,并下载所需的文件。是一个可行的解决方案..请建议.. –

+0

@helloWorld_Always - 看到我更新的答案。 – Kev

1

只有在Web服务器明确向您提供该数据时才有可能。文件的创建日期是文件系统的一部分。但是,当您通过HTTP下载某些内容时,它不是文件系统的一部分。

HTTP并没有像人们普遍认为的那样有“文件”的概念。相反,其他情况下作为“文件”的内容将作为响应数据与响应头一起传送,该响应头会提供有关数据的信息。如果客户端决定将数据保存为客户端本地文件系统上的文件,则头文件可以指定数据的类型(如PDF“文件”),甚至可以指定默认名称。

但是,即使在保存时,它也是客户端本地文件系统上的新文件。它不知道生成由Web服务器提供的数据的原始文件。