2017-09-01 123 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