我正在寻找一种通过 C# 的 WebClient 暂停或恢复上传过程的方法。
伪代码:
WebClient 客户端 = 新 WebClient(); Client.UploadFileAsync(new Uri("http://mysite.com/receiver.php"), "POST", "C:\MyFile.jpg");
也许像..
Client.Pause();
任何想法?
WebClient
没有这种功能-HttpWebRequest
据我所知,即使是稍低的级别也没有。您将需要使用一个 HTTP 库,它可以让您更好地控制事情发生的时间(当然,这无疑也会涉及更多代码)。重点WebClient
是提供一个非常简单的 API 以在非常简单的情况下使用。
正如 Jon Skeet 所说,这在 Webclient 而非 HttpWebRequest 类中不可用。
但是,如果您可以控制接收上传的服务器;也许您可以使用 WebClient 上传文件的小块,并在收到所有文件后让服务器组装这些块。然后,您会更容易制作暂停/恢复功能。
如果您无法控制服务器,您将需要使用一个 API,该 API 只为您提供控制,随后让您担心更多的事情。即便如此,如果你暂停太久,服务器可能会给你一个超时。
好的,在不给你代码示例的情况下,我会告诉你你能做什么。
为您的上传编写一个 WCF 服务,该服务需要使用流式传输。
要记住的事情:
我目前正在写一篇关于这个主题的博客文章,它将在本周发布,其中包含如何让它工作的代码示例。
你可以在我的博客上查看
我知道这不包含代码示例,但博客会有一些,但总而言之,这是停止和恢复文件上传到服务器的一种方式。
要执行此类操作,您必须编写自己的工作线程来逐步执行实际的 http post。
在发送之前,您必须检查操作是否已暂停并停止发送文件内容,直到它恢复。
但是,根据服务器的不同,如果连接在一段时间内不活动,则可以关闭连接,这可能只是几秒钟。