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

    1、php下载原理图

    2、文件下载源码:

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

  • 相关阅读:
    学习MongoDB(Troubleshoot Replica Sets) 集群排除故障
    MyBatis 相同事物查询缓存问题
    Spring事物源码
    Spring Session Redis
    Tomcat配置多个域名绑定到不同项目
    Shiro相关文章资料
    一网打尽:Java 程序员必须了解的计算机底层知识!
    Chrome 80 调教篇
    谭浩强《C++程序设计》
    HTTP/HTTPS协议
  • 原文地址:https://www.cnblogs.com/rrsina/p/4182303.html
Copyright © 2011-2022 走看看