当前位置:Gxlcms > PHP教程 > php应用开发之文件下载详解

php应用开发之文件下载详解

时间:2021-07-01 10:21:17 帮助过:26人阅读

本文介绍下,用php实现文件下载的一些代码,有需要的朋友不妨参考下。

1,php下载函数 借助header()函数与readfile()函数实现文件下载功能。

2,php文件下载脚本 更完善的php下载的自定义函数。

 'download/tool1_v30.exe', 
        'PROG2' => 'download/prog2setup.exe', 
        ); 
    // Get/check download file name 
    if (empty($fileid) || empty($DLFILES[$fileid])) 
    { 
        return ''; 
    } 
    // Set base directory to document root directory 
    // (could also be set to a directory outside document root!) 
    $basedir = getGlobalVar('DOCUMENT_ROOT'); 
    // Build and return download file name 
    return $basedir.'/'.$DLFILES[$fileid]; 
} 

function DownloadFile($filename) 
// Download file 
// Returns: TRUE if download successfully started, FALSE if download failed 
// Parameters: 
//    $filename : Download file pathname 
{ 
    // Verify filename 
    if (empty($filename) || !file_exists($filename)) 
    { 
        return FALSE; 
    } 
    // Create download file name to be displayed to user 
    $saveasname = basename($filename); 
    // Send binary filetype HTTP header 
    header('Content-Type: application/octet-stream'); 
    // Send content-length HTTP header 
    header('Content-Length: '.filesize($filename)); 
    // Send content-disposition with save file name HTTP header 
    header('Content-Disposition: attachment; filename="'.$saveasname.'"'); 
    // Output file 
    readfile($filename); 
    // Download successfully started 
    return TRUE; 
} 

function getGlobalVar($g, $formflag = 0) 
// Get global PHP variable value 
// Returns: global variable value or empty string if not available 
// Parameters: 
//  $g        : Global PHP variable name 
//  $formflag : Flag - global var from GET/POST input 
{ 
    if (empty($g)) 
    { 
        return 0; 
    } 
    // Try superglobal access (PHP 4.1.0+) 
    if ($formflag) 
    { 
        if (isset($_POST[$g])) 
        { 
            return $_POST[$g]; 
        } 
        if (isset($_GET[$g])) 
        { 
            return $_GET[$g]; 
        } 
        if (isset($_REQUEST[$g])) 
        { 
            return $_REQUEST[$g]; 
        } 
    } 
    else 
    { 
        if (isset($_SERVER[$g])) 
        { 
            return $_SERVER[$g]; 
        } 
        if (isset($_ENV[$g])) 
        { 
            return $_ENV[$g]; 
        } 
    } 
    // Try superglobal access (PHP 3.0.0+) 
    if (isset($GLOBALS[$g])) 
    { 
        return $GLOBALS[$g]; 
    } 
    // Try global variable access (PHP 3+) 
    global $$g; 
    if (!empty($$g)) 
    { 
        return $$g; 
    } 
    // Assume global variable empty/not set 
    return ''; 
} 
?>

将以上脚本保存为dl.php,在应用时传入id参数即可。

例如: Download Program 2 也可以通过php的重定向语句Location来实现,例如:

以上的代码,可以防止用户直接访问下载文件,起到了一定的文件保护,甚至是防盗链的功能。

以下的代码,可以依据http头信息,作些介绍,从而提供更安全的文件下载。

代码:

 
 

人气教程排行