2014-01-11 92 views
-1

檢查是否有可能下載文件用delphi檢查是否有可能下載文件用delphi

美好的一天......我開始在Delphi和我創建一個程序,從HTTP下載文件。 ..

我使用:

IdHTTP.Get (URL FileDownload) 

但是,當它不能下載文件我的程序產生錯誤...

例如:http://exemplo.com/ - >生成錯誤

例如:http://exemplo.com/meudownload.ts - >使下載

我想糾正這個錯誤,我怎麼能檢查是否有可能下載文件,或者如果它被降低...

我以前EIdHTTPProtocolExeption但只檢查HTML錯誤,如:404,300 ......而不是我希望......

我想看看你是否可以下載文件,或者如果它正在下載...

如果這種情況下我會下載其他文件:

donw_1.ts,down_2.TS,down_3.TS ...然後當他得到電子磁盤存檔一個無法下載,我有答案取消循環...

+0

您收到了什麼錯誤?請發佈整個錯誤消息 –

+0

「或者如果正在下載」 - 該信息應該保存在文件中的某個列表或數組中。服務器沒有辦法檢測你是否下載文件。許多服務器也沒有理由知道它。因此 - 你不能向服務器詢問它,你應該跟蹤你自己的程序在做什麼 –

+1

「看看你是否可以下載文件」,你只是試圖下載文件。如果你下載了它,那麼它可以被下載。如果您未能下載,則無法下載。 –

回答

0

無法通過執行掃描HEAD來解決問題...並設法解決HTTP 404錯誤的問題....在沒有文件下載的地方產生此錯誤EIdHTTPProtocolExeption ...問題有已解決....

+1

你在尋求幫助,得到它,但接受你自己的低質量答案令人煩惱。 @雷米花時間給你一個很好的答案。你知道他是Indy的作者嗎?你應該接受他的回答。你在這裏一次又一次地做了這個。這是非常忘恩負義。 –

2

如果您只想查看服務器上是否存在文件,請使用TIdHTTP.Head。這個函數只是下載從等價的Get調用返回的頭文件,而不是數據本身。然後您可以檢查標題以查看文件是否存在並決定下一步該做什麼。

+2

有(並且可能還有)不支持HEAD方法的服務器。我看到的大多數下載器而不是HEAD以0-0字節範圍發出GET響應 –

+1

不能保證下一個http-get會成功。因此,處理異常而不是試圖假裝你可以預測錯誤的原因。 –

+1

@ Arioch'The,那些服務不符合規格,應該被忽略。 –

6

抓住EIdHTTPProtocolException是你應該做的。請記住,Indy是專門爲錯誤報告使用例外而設計的。 EIdHTTPProtocolExceptionTIdHTTP如何從服務器報告特定於HTTP的錯誤(任何其他類型的異常意味着套接字或RTL都有問題並且HTTP請求可以重試)。事實上,您得到該異常意味着服務器無法按要求提供文件,因此通常不應該重試,除非您知道這是可恢復的錯誤。檢查例外ErrorCode是可選的,但如果您確實需要區分特定錯誤,則可以使用該例外。

相關問題