首页 > php上传下载 > php利用header实现文件下载代码

php利用header实现文件下载代码

在php中如果要实现下载如图片文件,php文件,html文件这些文件我们如果在网站上点击都是直接打开了,如果要实现下载我们可以利用php header函数来操作.

例1,代码如下:

<?php
function download($file_url, $new_name = '') {
    if (!isset($file_url) || trim($file_url) == '') {
        return '500';
    }
    if (!file_exists($file_url)) { //检查文件是否存在
        return '404';
    }
    $file_name = basename($file_url);
    $file_type = explode('.', $file_url);
    $file_type = $file_type[count($file_type) - 1];
    $file_name = trim($new_name == '') ? $file_name : urlencode($new_name) . '.' . $file_type;
    $file_type = fopen($file_url, 'r'); //打开文件
    //输入文件标签
    header("Content-type: application/octet-stream");
    header("Accept-Ranges: bytes");
    header("Accept-Length: " . filesize($file_url));
    header("Content-Disposition: attachment; filename=" . $file_name);
    //输出文件内容
    echo fread($file_type, filesize($file_url));
    fclose($file_type);
}
?>

例2,以下php代码可以解决:

<?php
if (emptyempty($_GET['FileName']) || emptyempty($_GET['FileDir']) || emptyempty($_GET['FileId'])) {
    echo '<script> alert("非法连接 !"); location.replace ("index.php") </script>';
    exit();
}
$file_name = $_GET['FileName'];
$file_dir = $_GET['FileDir'];
$FileId = $_GET['FileId'];
$file_dir = $file_dir . "/";
if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
    echo "文件找不到";
    exit;
} else {
    $file = fopen($file_dir . $file_name, "r"); // 打开文件
    // 输入文件标签
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length: " . filesize($file_dir . $file_name));
    Header("Content-Disposition: attachment; filename=" . $file_name);
    // 输出文件内容
    echo fread($file, filesize($file_dir . $file_name));
    fclose($file);
    exit();
}
?>

直接下载文件,代码如下:

<?php
$file = get_file_address(); // 文件的真实地址(支持url,不过不建议用url)
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

小提示,header函数不只是可以实现文件下载,他还有很多的功能,如发送404,301等等状态信息都是可以的.

注意:在使用header之前我们必须在header之前没有任何输出,否则就会报错.


教程网址:http://www.phprm.com/scxz/fs3967.html

欢迎收藏∩_∩但请保留本文链接。

标签:文件下载 php header

相关文章

发表留言