2017-09-01 160 views
0

現在我將通過delphi 10中的Nethttpclient組件將文件發送到我的服務器,但我不知道如何跟蹤上傳時的進度。如果我下載文件,我可以通過活動ReceiveData獲得進展。 有沒有任何其他有用的功能或事件來做到這一點,請您幫我解決這個問題。(只nethttpclient,因爲我不使用Indy如何跟蹤在delphi 10中通過NetHttpClient上傳的進度?

+2

什麼?另一個HTTP組件?接口編程的另一個好的理由。如果您創建並使用僅實現的接口對象,那麼切換到Indy或其他可以報告進度的庫或組件是沒有問題的。 – Victoria

+0

是的,但是我的所有代碼都基於nethttpclient – HenryXu

+0

僅僅是一個細節,是不是像XE10 –

回答

4

TNetHTTPClient根本不暴露在任何種類的狀態信息除OnRequestCompleteOnRequestError以外的上傳。如果您需要上傳數據進度的狀態,則應切換到另一個提供所需進度報告的HTTP庫。

這就是說,我可以看到用TNetHTTPClient獲取上傳狀態的唯一方法是使用TStream發佈文件數據。從TFileStream導出自定義類並覆蓋其Read()方法以根據需要讀取文件數據和報告狀態。

+0

這樣的版本怎麼做,請給我一些提示信息,我嘗試修改它。 – HenryXu

+1

@HenryXu:您要求的內容對於StackOverflow太寬泛。有許多HTTP庫可用,並且其中很多都有進度報告。只需選擇一個適合您的需求並更改您的代碼即可使用它。你爲什麼不想用Indy?它已預先安裝在RAD Studio中,其HTTP組件具有用於發送和接收的進度事件。 –

+0

是的,他們有indy,ics,cis等進度事件。原因之一,我不喜歡使用許多第三方組件,另一個原因是,我擁有的組件和我的應用程序的所有代碼都基於nethttpclient。我不希望我改變組件來獲得一個功能。 – HenryXu