C#断点续传

断点续传是由服务端给客户端一个已经上传的位置标记position,然后客户端再将文件移动到向应的position,通过输入流将文件剩余部分读出来传输给服务器。

在做这个功能之前我们必须先了解一下相关的知识点。http协议的range和content-range

Range是一个请求头 ,告知服务器返回文件的那一部分。在一个range首部中,可以一次性请求多个部分,服务器会以multipart文件的形式将其返回,如果服务器返回的是范围响应,需要使用206Partial Content状态码。假如所请求的范围不合法,那么服务器会返回416状态码,表示客户端错误。服务器允许忽略Range首部,从而返回整个文件,状态码用200.

语法:

Range: <unit>=<range-start>-
Range: <unit>=<range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>
Range: <unit>=<range-start>-<range-end>, <range-start>-<range-end>, <range-start>-<range-end>

指令

unit:范围所采用的单位,通常是字节。

range-start:一个整数,表示在特定单位下,范围的起始值。

range-end:一个整数,表示在特定的单位下,范围的结束值。这个值是可选的,如果不存在,表示此范围一直延伸到文档的结束。

Content-Range是服务端的响应

语法:

Content-Range: <unit> <range-start>-<range-end>/<size>
Content-Range: <unit> <range-start>-<range-end>/*
Content-Range: <unit> */<size>

指令:

unit:数据区间操作所采用的单位,通常是字节

range-start:一个整数,表示在给定单位下,区间的起始值

range-end:一个整数,表示在给定的单位下,区间的结束值。

size:文件的大小,如果大小不知道就采用*表示。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值