zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    贝塞尔曲线
    行为树
    Astar寻路算法
    vuex入门
    关于用户留存率的计算的几个层次-费元星
    linux命令执行返回值(附错误对照表)费元星
    rabbitmqadmin安装与使用
    分布式锁服务 分布式协调系统
    记录一次使用react异步不更新数据的问题
    从0到1搭建前端异常监控系统(Vue + Webpack + Node.js + Egg.js + Jest)
  • 原文地址:https://www.cnblogs.com/xinyunyou/p/12639143.html
Copyright © 2011-2022 走看看