delphi 10 如何跟踪 NetHttpClient 的上传进度?
How to Track the progress of the Upload by NetHttpClient in delphi 10?
现在我会通过delphi10中的Nethttpclient
组件将文件发送到我的服务器,但是我不知道上传时如何跟踪进度。如果我下载文件,我可以通过事件ReceiveData
获取进度。
没有任何其他有用的功能或事件可以做到这一点,请帮助我解决这个问题。(只有nethttpclient
,因为我不使用Indy
)
TNetHTTPClient
除了 OnRequestComplete
and OnRequestError
外,在上传过程中不会公开任何类型的状态信息。如果您需要有关上传数据进度的状态,您应该切换到另一个提供您想要的进度报告类型的 HTTP 库。
话虽这么说,我可以看到使用 TNetHTTPClient
获取上传状态的唯一方法是使用 TStream
post 文件数据。从 TFileStream
派生自定义 class 并覆盖其 Read()
方法以读取文件数据并根据需要报告状态。
实际上(我使用 Delphi v. 10.4.1)TNetHttpClient 实现了一个名为 OnSendData 的 property/method 类似于 OnReciveData 以在上传期间管理 post 流:
property OnSendData: TSendDataEvent read FOnSendData write SetOnSendData;
基于在“System.Net.HttpClient.THTTPClient.Post”中声明为对象过程的 TSendDataEvent:
TSendDataEvent = procedure(const Sender: TObject; AContentLength: Int64; AWriteCount: Int64; var AAbort: Boolean) of object;
希望有用
现在我会通过delphi10中的Nethttpclient
组件将文件发送到我的服务器,但是我不知道上传时如何跟踪进度。如果我下载文件,我可以通过事件ReceiveData
获取进度。
没有任何其他有用的功能或事件可以做到这一点,请帮助我解决这个问题。(只有nethttpclient
,因为我不使用Indy
)
TNetHTTPClient
除了 OnRequestComplete
and OnRequestError
外,在上传过程中不会公开任何类型的状态信息。如果您需要有关上传数据进度的状态,您应该切换到另一个提供您想要的进度报告类型的 HTTP 库。
话虽这么说,我可以看到使用 TNetHTTPClient
获取上传状态的唯一方法是使用 TStream
post 文件数据。从 TFileStream
派生自定义 class 并覆盖其 Read()
方法以读取文件数据并根据需要报告状态。
实际上(我使用 Delphi v. 10.4.1)TNetHttpClient 实现了一个名为 OnSendData 的 property/method 类似于 OnReciveData 以在上传期间管理 post 流:
property OnSendData: TSendDataEvent read FOnSendData write SetOnSendData;
基于在“System.Net.HttpClient.THTTPClient.Post”中声明为对象过程的 TSendDataEvent:
TSendDataEvent = procedure(const Sender: TObject; AContentLength: Int64; AWriteCount: Int64; var AAbort: Boolean) of object;
希望有用