• 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

  • 相关阅读:
    vue-router 滚动行为封装示例
    HTML5 History 模式 后端ngnix配置
    vue-router 嵌套命名视图
    npm 源管理 nrm
    windows系统git使用zip命令报错解决方法
    vue v-html 动态内容样式无效解决方法
    vue 项目打包 本地预览
    Vue 项目环境变量
    Oracle中的统计信息
    宽表和窄表的区别---字段
  • 原文地址:https://www.cnblogs.com/xinyunyou/p/12639143.html
Copyright © 2020-2023  润新知