• php 三种文件下载的实现


    1、直接添加文件链接
    <button>
    <a href = "http://localhost/down.zip">
    下载文件
    </button>


    2、传递参数查找并跳转到下载链接
    传递参数:

    <button>
    <a href = "http://localhost?f='down'">
    下载文件
    </button>

    查找文件并跳转到下载链接:

    <?php

    $down = $_GET['f']; //获取文件参数
    $filename = $down.'.zip'; //获取文件名称
    $dir ="down/"; //相对于网站根目录的下载目录路径
    $down_host = $_SERVER['HTTP_HOST'].'/'; //当前域名


    //判断如果文件存在,则跳转到下载路径
    if(file_exists(__DIR__.'/'.$dir.$filename)){
    header('location:http://'.$down_host.$dir.$filename);
    }else{
    header('HTTP/1.1 404 Not Found');
    }

    结果:

    文件存在,提示下载


    文件不存在,跳转404

    3、head() 和 fread()函数把文件直接输出到浏览器
    <?php
    $file_name = "down";
    $file_name = "down.zip"; //下载文件名
    $file_dir = "./down/"; //下载文件存放目录
    //检查文件是否存在
    if (! file_exists ( $file_dir . $file_name )) {
    header('HTTP/1.1 404 NOT FOUND');
    } else {
    //以只读和二进制模式打开文件
    $file = fopen ( $file_dir . $file_name, "rb" );

    //告诉浏览器这是一个文件流格式的文件
    Header ( "Content-type: application/octet-stream" );
    //请求范围的度量单位
    Header ( "Accept-Ranges: bytes" );
    //Content-Length是指定包含于请求或响应中数据的字节长度
    Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) );
    //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
    Header ( "Content-Disposition: attachment; filename=" . $file_name );

    //读取文件内容并直接输出到浏览器
    echo fread ( $file, filesize ( $file_dir . $file_name ) );
    fclose ( $file );
    exit ();
    }

    结果:和第二个一样
    ————————————————
    版权声明:本文为CSDN博主「change_any_time」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/change_any_time/java/article/details/79706772

  • 相关阅读:
    “用户、组或角色'XXX'在当前数据库中已存在”问题
    C#与Java在继承静态类上的区别
    Java中静态内部类的理解
    python第三天
    python第二天
    python第一天
    applicationhost.config web.config
    IIS:错误: 无法提交配置更改,因为文件已在磁盘上更改
    SMO 的环境
    从客户端中检测到有潜在危险的 Request.Form 值
  • 原文地址:https://www.cnblogs.com/xinyunyou/p/12639143.html
Copyright © 2020-2023  润新知