影子互联

专注深圳网站建设

一段支持大文件下载的PHP代码

时间:2017-11-18 18:41:47,点击:0

一段支持大文件下载的PHP代码

<?php
require('common/incfiles/common.inc.php');
require('common/incfiles/config.inc.php');
require('common/incfiles/module_config.inc.php');
header("Content-type:text/html;charset=utf-8");
set_time_limit(0);
//http://www.aaa.com/download.php?img=/files/aaa.mp4&imgname=aaa.mp4
$file_sub_path=$_SERVER['DOCUMENT_ROOT'].ii_htmlencode($_GET['img']);//$_GET['img']是文件地址参数  例如:/files/aaa.mp4
$file_name=ii_htmlencode($_GET['imgname']);//$_GET['imgname']是文件名参数  例如:aaa.mp4
$file_path=$file_sub_path; 
//$file_path=iconv("utf-8","gb2312",$file_path); 
//$file_name=iconv("utf-8","gb2312",$file_name); 
//首先要判断给定的文件存在与否 
if(!file_exists($file_path)){ 
  echo "没有该文件文件".$file_path; 
  return ; 
  } 
  $file_size=filesize($file_path); 
  //下载文件需要用到的头 
  Header("Content-type: application/octet-stream");  
  Header("Accept-Ranges: bytes"); 
  Header("Accept-Length:".$file_size);
  Header("Content-Disposition: attachment; filename=".$file_name); 
  echo "<script type='text/javascript'>alert('请先选中要下载的资料!');window.close();</script>";

  //设置指针位置 
$fp=fopen($file_path,"rb"); //b二进制打开
fseek($fp,0); 
//循环输出 
while (!feof($fp)) { 
    //设置文件最长执行时间 
    set_time_limit(0); 
    print (fread($fp, 1024 * 8)); //输出文件 
    flush(); //输出缓冲 
    ob_flush(); 
} 
  
  fclose($fp); 
  ?>