zoukankan      html  css  js  c++  java
  • 一个简单的PHP文件下载方法 download

    <?php
    /*
     *
     *@param function downloadFile	文件下载
     * 
     *@param string $filename 下载文件的路径(根目录下的绝对路径)
     *
     *@param int $status 错误提示状态	0:提示文件名错误	1:提示整个路径错误	404:提示错误
     *
     *@param string $defaultPath 默认的路径
     *                           要下载文件所在的路径
     *                           如果为空则在$filename里面就要加上路径,不为空$filename为要下载文件的文件名即可
     * 
     */
    function downloadFile($filename,$status=404,$defaultPath="/////test/"){
    
    	header("Content-type:text/html;charset=utf-8");
    	//对下载文件路径进行操作
    	$filename = $defaultPath.$filename;
    	$filename = trim($filename,"/");	//去除文件路径左右的‘/’
    	$fileArr = explode("/",$filename);
    	$file_name = $fileArr[count($fileArr)-1];	//获取文件名
    
    	//当默认路径为空,且下载文件的路径只有文件名
    	if(empty($defaultPath) && count($fileArr)==1){
    		die("下载路径出错...");
    	}
    
    	$path = "";
    	foreach ($fileArr as $key => $value) {
    		# code...
    		if($key==0){
    			$value = "/".$value;	//定义第一层目录加'/',如把"aaa"转换成"/aaa"
    		}
    		if($key<count($fileArr)-1){
    			$path .= $value."/";	//获取路径的目录,到所下载文件的目录,如"/aaa/bbb/ccc/ddd/"
    		}
    	}
    	//var_dump($fileArr);
    	//用以解决中文不能显示出来的问题
    	$file_name=iconv("utf-8","gb2312",$file_name);
    	$file_sub_path=$_SERVER['DOCUMENT_ROOT'].$path;
    	$file_path=$file_sub_path.$file_name;
    
    	//首先要判断给定的文件存在与否
    	if(!file_exists($file_path)){
    		if($status==0){
    			$error_info = $file_name;	//提示文件名错误
    		}elseif($status == 1){
    			$error_info = $file_path;	//提示整个路径错误
    		}else{
    			$error_info = "";
    		}
    		die("文件<b>".$error_info."</b>不存在");
    	}
    	
    	$fp=fopen($file_path,"r");
    	$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);
    	$buffer=1024;
    	$file_count=0;
    	//向浏览器返回数据
    	while(!feof($fp) && $file_count<$file_size){
    		$file_con=fread($fp,$buffer);
    		$file_count+=$buffer;
    		echo $file_con;
    	}
    	fclose($fp);
    }
    
    $file = "ifdan.php";
    
    downloadFile($file,1);
    	
    ?> 
    

      


    • 一个简单的文件下载功能
  • 相关阅读:
    try catch finally return
    github结合TortoiseGit使用sshkey,无需输入账号和密码
    github上fork别人的代码之后,如何保持和原作者同步的更新
    第9章 浅度和深度复制
    9.7结构类型
    excel在msdn上的说明文档
    9.6接口和抽象类
    [LeetCode]N-Queens II
    鸟哥Linux私房菜知识汇总8至9章
    Memcahce(MC)系列(三)Memcached它PHP转让
  • 原文地址:https://www.cnblogs.com/xy404/p/3673637.html
Copyright © 2011-2022 走看看