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”);

  • 相关阅读:
    BZOJ 4032: [HEOI2015]最短不公共子串 (dp*3 + SAM)
    后缀自动机详解!
    BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机 多串)
    BZOJ 3938 Robot
    [JSOI2008]Blue Mary开公司
    [ZJOI2017]树状数组
    [JSOI2015]非诚勿扰
    [HNOI2011]任务调度
    BZOJ 3680 吊打XXX
    POJ 3318 Matrix Multiplication
  • 原文地址:https://www.cnblogs.com/rrsina/p/4120815.html
Copyright © 2011-2022 走看看