• 技术文章 >后端开发 >PHP问题

    php怎么实现下载时修改文件名

    藏色散人藏色散人2021-02-25 10:23:48原创453

    php实现下载时修改文件名的方法:首先设置好下载地址;然后在Controller里控制输出名,代码如“$file = './路径/1.zip'...header('Pragma: public');readfile($file)...”。

    本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

    php下载文件时修改文件名

    下载地址:

    /download.php?controller=down_file&file=1.zip

    然后在Controller里控制输出名就可以实现

    $file = './路径/1.zip';
    filename = '2.zip';
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header("Content-type:text/html;charset=utf-8");
    header('Content-Disposition: attachment; filename='. $filename);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    readfile($file);
    exit;

    【推荐学习:《PHP视频教程》】

    ==============

    <?php
    $file_name="aa.rar";//需要下载的文件
    $file_name=iconv("utf-8","gb2312","$file_name");
    $fp=fopen($file_name,"r+");//下载文件必须先要将文件打开,写入内存
    if(!file_exists($file_name)){//判断文件是否存在
        echo "文件不存在";         //如果不存在
        exit();                              //直接退出
    }                                         //如果存在,继续执行下载
    $file_size=filesize("aa.rar");//判断文件大小
    //返回的文件
    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);
    ?>

    =========

    我们一般实现下载都是调用url来下载,但是遇到ie能识别打开的文件就不能用这种方式了,比如下载一个图片、html网页等,这时就需要编程来实现,以下php代码可以解决:

    <?
    if( empty($_GET['FileName'])|| empty($_GET['FileDir'])|| empty($_GET['FileId'])){
        echo'<script> alert("非法连接 !"); location.replace ("index.php") </script>'; exit();
    }
    $file_name=$_GET['FileName'];
    $file_dir=$_GET['FileDir'];
    $FileId=$_GET['FileId'];
    $file_dir = $file_dir."/";
    if   (!file_exists($file_dir.$file_name))   {   //检查文件是否存在  
      echo   "文件找不到";  
      exit;    
      }   else   {  
    $file = fopen($file_dir . $file_name,"r"); // 打开文件
    // 输入文件标签
    Header("Content-type: application/octet-stream");
    Header("Accept-Ranges: bytes");
    Header("Accept-Length: ".filesize($file_dir . $file_name));
    Header("Content-Disposition: attachment; filename=" . $file_name);
    // 输出文件内容
    echo fread($file,filesize($file_dir . $file_name));
    fclose($file);
    exit();
    }
    ?>

    以上就是php怎么实现下载时修改文件名的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:php 怎么隐藏银行卡号 下一篇:php怎么转换字符编码为utf8
    大前端线上培训班

    相关文章推荐

    • 讲解php7连接mysql数据库• 如何解决php不能编译问题• php怎么实现数据替换• php怎么实现上传文件并替换• php 怎么隐藏银行卡号

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网