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