zoukankan      html  css  js  c++  java
  • PHP批量下载方法

     


     

    PHP批量下载方法
    界面:
    $.get(“< ?php echo url::base(true);?>inventory/report/buildCsv”, //后台路径
    {‘params’:’params’}, //参数
    function (filename) {
    //将参数传递到后台,后台创建好csv后返回文件名,再次访问文件来下载
    window.open(“< ?php echo url::base(true);?>downloads/”+filename);
    }
    );
    后台:
    public function action_buildCsv () {
    set_time_limit(0);
    //进行文件加密,返回md5格式文件名字,这里我加上时间戳是因为我需要下载的数据是实时的,如果同一天内下载一次就行,可以不用,一天内下载一次即可其他时间直接下载
    $_GET[‘date’] = $_SERVER[‘REQUEST_TIME’];
    $md5 = md5(join(‘::’,$_GET));
    //如果同一天下载一次就行则加上条件
    //date(‘Y-m-d’,$_SERVER[‘REQUEST_TIME’])!==date(‘Y-m-d’,filemtime($path))
    if(!is_file($path)||){
    $filename = DOCROOT.”downloads/”.$md5.”.csv”;
    $fp=fopen($filename,”w+”); //打开文件

    //标题,后边加上 即可,windows加上 进行换行
    $list_str = ‘采购单号,SKU,品名,金额.” ”;
    ………..根据get以及sql获取数据为$lists(也可以用mysqli_fetch_row方式)……
    foreach($lists as $list) {
    //这里是拼接的,此处省略赋值直接用一些变量代替
    //这里要注意的就是中文用”来包含,因为字符串中间包含空格时会出现错位
    //对于业务要使用的数字运算肯定不能加”,否则他们excle求和不能用
    $list_str .= “{$pu_id]},{$sku},”{$list[‘sku_name’]}”,{$list[‘money’]} ”;
    }
    fputs($fp,$list_str);
    fclose($fp);
    }
    ob_end_flush();
    header(“Content-type:text/csv”);
    header(“Content-Disposition:attachment;filename={$md5}.csv”); //“生成文件名称”
    header(‘Cache-Control:must-revalidate,post-check=0,pre-check=0’);
    header(‘Expires:0’);
    header(‘Pragma:public’);
    echo $md5;
    exit; } 注:服务器创建的承装下载文件的文件夹downloads权限要改为可读写

  • 相关阅读:
    Vue(五)模板
    2.typescript-你好世界
    1.typescript-安装
    jquery事件冒泡
    jquery中animate的使用
    Python 环境管理
    CentOS yum 源修改
    Node.js
    端口
    CSV
  • 原文地址:https://www.cnblogs.com/aipiaoborensheng/p/5153292.html
Copyright © 2011-2022 走看看