2011-07-28 63 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服務器提供的數據的原始文件。