php断点续传 416,php断点续传

$file_dir = '/demo/';

$filename = 'text.txt';

$sourceFile = $file_dir.$filename;

$fp = fopen($sourceFile, "rb");

//检测文件是否存在

if (!is_file($sourceFile)) {

die("404 File not found!");

}

$filename = basename($sourceFile); //获取文件名字

$file_size = filesize($sourceFile);

$size2 = $file_size -1; //文件总字节数

$ctype = "application/vnd.android.package-archive";

header("Cache-Control:");

header("Cache-Control: public");

//设置输出浏览器格式

header("Content-Type: $ctype");

header("Content-Disposition: attachment; filename=" . $filename);

header("Accept-Ranges: bytes");

if (isset($_SERVER ['HTTP_RANGE'] )) {

if (preg_match ( '/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER ['HTTP_RANGE'], $matches )) {

// 读取文件,起始节点

$begin = intval ( $matches [1] );

// 读取文件,结束节点

if (! empty ( $matches [2] )) {

$end = intval ( $matches [2] );

}

}

$new_length = $file_size - $begin; //获取下次下载的长度

header("HTTP/1.1 206 Partial Content");

header("Content-Length: $new_length"); //输入总长

header("Content-Range: bytes $begin-$size2/$file_size" );

}else{

header("Content-Range: bytes 0-$size2/$file_size"); //Content-Range: bytes 0-4988927/4988928

header("Content-Length: " . $file_size); //输出总长

}

$buffer=1024;

fseek($fp, $begin);

$file_count=0;

while(!feof($fp) && ($file_size-$file_count>0)){

$file_data=fread($fp,$buffer);

$file_count+=$buffer;

echo $file_data;

}

fclose($fp);

exit ();

文件直接下载可以安装,断点那一块,文件下载完之后总是不能够安装,什么愿意,代码哪里错了?大神求解答。调试一天也没调出来,试了很多种方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值