Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C语言中暂停/恢复上传#_C#_Upload_Webclient - Fatal编程技术网

C# 在C语言中暂停/恢复上传#

C# 在C语言中暂停/恢复上传#,c#,upload,webclient,C#,Upload,Webclient,我正在寻找一种通过C#的网络客户端暂停或恢复上传过程的方法 伪代码: WebClient Client = new WebClient(); Client.UploadFileAsync(new Uri("http://mysite.com/receiver.php"), "POST", "C:\MyFile.jpg"); WebClient客户端=新的WebClient(); Client.UploadFileAsync(新Uri(“http://mysite.com/receiver.php

我正在寻找一种通过C#的网络客户端暂停或恢复上传过程的方法

伪代码:

WebClient Client = new WebClient(); Client.UploadFileAsync(new Uri("http://mysite.com/receiver.php"), "POST", "C:\MyFile.jpg"); WebClient客户端=新的WebClient(); Client.UploadFileAsync(新Uri(“http://mysite.com/receiver.php“,”POST“,”C:\MyFile.jpg“; 也许是

Client.Pause(); Client.Pause();
有什么想法吗?

WebClient
没有这种功能-就我所知,即使是稍低一点的
HttpWebRequest
也没有。您需要使用一个HTTP库,它可以让您更好地控制事情发生的确切时间(当然,这无疑也会涉及更多的代码)。
WebClient
的要点是提供一个非常简单的API,用于非常简单的情况。

正如Jon Skeet所说,这在WebClient非HttpWebRequest类中不可用

但是,如果您控制了接收上载的服务器;也许您可以使用WebClient上传文件的小块,并让服务器在收到所有内容后组装这些小块。这样您就可以更轻松地实现暂停/恢复功能


如果您无法控制服务器,那么您将需要使用一个API,该API只为您提供控制权,并随后为您提供更多需要担心的内容。即使如此,如果您暂停太长时间,服务器可能会给您一个超时。

要执行类似操作,您必须编写自己的工作线程,以逐步执行实际的http post

在发送文件之前,必须检查操作是否已暂停,并停止发送文件内容,直到恢复


但是,根据服务器的不同,如果连接在某段时间内不处于活动状态,则可能会关闭连接,这可能只有几秒钟。

好的,没有给出代码示例,我将告诉您可以做什么

为您的上传编写WCF服务,该服务需要使用流媒体

要记住的事情:

  • 客户端和服务器需要识别 该文件介绍了我如何建议使用 一个Guid,以便服务器知道 文件来附加额外的数据
  • 客户需要跟踪 在阵列中的位置,以便它知道 之后从哪里开始播放流媒体 继续。(你甚至可以拿到 服务器告诉客户端多少钱 它有数据,但确保客户端 我也知道)
  • 服务器需要跟踪如何 它已经下载了很多数据 还有多少东西还没找到。文件夹 应该有一生的时间在网上 服务器,你不想上传一半 以及存储在计算机上的被遗忘的文件 永远的服务器
  • 请记住,流媒体确实如此 不允许身份验证,因为 整个调用只是一个httprequest。 您可以使用ssl,但请记住这一点 将增加开销
  • 您将需要创建服务 消息级标准的契约 方法不行
我目前正在写一篇关于这个主题的博客文章,本周将发布一篇关于如何让它工作的代码示例

你可以查一下


我知道这不包含代码示例,但博客中会有一些示例,但总而言之,这是停止并恢复文件上传到服务器的一种方法。

同意Jon!事实上,我提出这个问题是因为我很好奇C#和PHP如何相处;)