Nginx的perl模块中的sendfile支持续传功能。
1、获取客户端请求的偏移位置。
2、获取文件大小并返回正确的头部信息
3、发送用户请求的数据。
1、获取客户端请求的偏移位置。
$range = $r->header_in("Range");
$start = 0;
if( $range =~ /bytes=(\d+)-/ )
{
$start = $1;
}
2、获取文件大小并返回正确的头部信息
@s=stat($r->filename);
$conlen = $s[7] - $start;
$r->header_out('Content-Length',$conlen);
$r->header_out('Content-Range','bytes '.$start.'-'.($s[7] - 1).'/'.$s[7]);
3、发送用户请求的数据。
$r->sendfile($r->filename,$start);