none
如何判斷網路上某個檔案是存在的? RRS feed

  • 問題

  • 我使用vs.net2003

    File.Exist 可以判斷本機檔案存在否

    那假如我要判斷網路上某個檔案是否存在

    應該怎樣做?

    我嘗試用 webclient.downloadData

    好像不好控制,因為如果檔案存在,程式就會下載很久

    但是我並不需要真的下載檔案

    請前輩指點,謝謝

    2007年4月23日 下午 03:02

解答

所有回覆

  • 請問  你所謂網路上某個檔案??是指區域網路 還是網際網路

    如果是區域網路  應該可以用

    MessageBox.Show(My.Computer.FileSystem.FileExists("\\SERVERNAME\本機磁碟 (D)\temp\1.txt").ToString)

    不過限定路徑要分享共用

    如果是網際網路  就好像不行歐  好像和WEB伺服器或FTP伺服器設定也有關係  並不單純是指令的問題 還有帳號 密碼 登入權限的問題......你可以參考有關FTP程式設計方面的資料  我也幫你找找

    舉個例子  Flashget 來說  好像也是先當下來才知道該檔案是否有存在(僅個人想法)

    2007年4月23日 下午 03:18
  • 抱歉,我沒寫清楚

    我是指網際網路上的檔案 , 假設不考慮登入權限密碼等問題

    就是說那檔案是public的, 是否也無從作到這功能?

    如果真的不行的話,是否可以用 webclient.DownloadFile(uri)

    然後設一個timer 每隔100毫秒去偵測,若檔案大小有改變

    就是檔案存在, catch 到 exception 就是檔案不存在

    只是如果檔案存在,不知道要怎樣中斷下載...

    除非放在另一個process內? 然後把這process kill 就算是中斷了

    好像太迂迴了,純粹個人一時亂想的,呵~~~

     

     

    2007年4月23日 下午 03:52
  • 關於 http 檔案,可以依據標準協定使用 HEAD 抓檔,就只回傳回該網址的檔頭,約 2k 左右的流量。

     

    可用 WebRequest.Method = "HEAD" 後,判斷傳回的 WebResponse.ContentLength 是否大於 0 (GetResponse 發生錯誤就是檔案不存在)

     

    或用 TcpClient 連,下:

    HEAD /path/file.ext HTTP/1.0{Enter}

    {Enter}

     

    傳回 HTTP/1.1 404 就是沒檔案。

    2007年4月23日 下午 05:31
    版主
  • 哇 竟然有現成的程式碼可套用

    感激~~~我會在程式碼中註明引用來源

    2007年4月24日 上午 02:55