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');
    }

    结果:

    文件存在


    文件不存在

    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 ();
    }

    结果:和第二个一样

  • 相关阅读:
    VOIP开源项目源码地址(一)
    iptables下udp穿越实用篇
    function socket about http://net.pku.edu.cn/~yhf/linux_c/function/14.html
    IOKE的SIP协议专栏
    XviD core API overview: Decoding
    Socket about
    sql海量数据优化
    Socket、多线程、消息队列、共享资源并发下的性能研究
    【转】SQL 索引理解
    SQL 索引理解
  • 原文地址:https://www.cnblogs.com/chenduzizhong/p/10986132.html
Copyright © 2011-2022 走看看