zoukankan      html  css  js  c++  java
  • PHP文件下载原理

    1、php下载原理图

    2、文件下载源码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    $file_name="哈哈.jpg";//需要下载的文件
    $file_name=iconv("utf-8","gb2312","$file_name");
    $fp=fopen($file_name,"r+");//下载文件必须先要将文件打开,写入内存
    if(!file_exists($file_name)){//判断文件是否存在
        echo "文件不存在";
        exit();
    }
    $file_size=filesize("a.jpg");//判断文件大小
    //返回的文件
    Header("Content-type: application/octet-stream");
    //按照字节格式返回
    Header("Accept-Ranges: bytes");
    //返回文件大小
    Header("Accept-Length: ".$file_size);
    //弹出客户端对话框,对应的文件名
    Header("Content-Disposition: attachment; filename=".$file_name);
    //防止服务器瞬时压力增大,分段读取
    $buffer=1024;
    while(!feof($fp)){
        $file_data=fread($fp,$buffer);
        echo $file_data;
    }
    //关闭文件
    fclose($fp);
    ?>

    3、文件编码问题解决方法:

      如果文件名是中文,php的函数不能识别中文文件名,一般如果程序编码为utf-8,php的函数比较古老,只能识别gb2312编码的中文,所以把中文用iconv(“原编码”,”要转成的编码”,”要转码的字符串”)函数可以转码。

      比如,把一个字符串从utf-8转码为gb2312

      $file_name=iconv(“utf-8”,”gb2312”,”$file_name”);

  • 相关阅读:
    HTML基础
    Java基础05-计算机单位
    Java基础04-运算符
    Java基础03-数据类型
    Java基础02-变量
    Java基础01-HelloWorld
    MarkDown基本使用
    短视频学习
    c# as 总结
    在C#中使用Nullable类型和 tuple类
  • 原文地址:https://www.cnblogs.com/rrsina/p/4120815.html
Copyright © 2011-2022 走看看