当前位置 博文首页 > 文章内容

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

    作者:shunshunshun18 栏目:未分类 时间:2021-02-25 10:47:03

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



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