PHP批量下载方法
2016-01-23 14:41
585 查看
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+”); //打开文件
//标题,后边加上\n即可,windows加上\r\n进行换行
$list_str = ‘采购单号,SKU,品名,金额.”\n”;
………..根据get以及sql获取数据为$lists(也可以用mysqli_fetch_row方式)……
foreach($lists as $list) {
//这里是拼接的,此处省略赋值直接用一些变量代替
//这里要注意的就是中文用\”来包含,因为字符串中间包含空格时会出现错位
//对于业务要使用的数字运算肯定不能加\”,否则他们excle求和不能用
$list_str .= “{$pu_id]},{$sku},\”{$list[‘sku_name’]}\”,{$list[‘money’]}\n”;
}
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权限要改为可读写
相关文章推荐
- VC FTP服务器程序分析(一)
- PHP 数组和字符串互相转换实现方法
- Installing PCNTL for PHP on OSX Lion
- [总结]PHP变量常量、流程控制、函数应用
- 家里各台机器的php性能测试
- php类库安装xml
- php CURL 调用Webservices专题
- vim任意目录下执行php命令
- 关于windows下基于php7.0.2下编写的第一个扩展
- thinkphp复合查询AND和OR同时使用
- Matplotlib tutorial(1)
- ltnmp 3.0 发布,PHP 开发环境一键安装包
- php上传图片获取路径及给表单字段赋值的方法
- PHP 字符串 加*
- PHP图像处理类库及演示分享
- php 多维数组如何用foreach遍历修改其中的一个值
- php输出文件,数组
- 开坑!PHP-MYSQL-AJAX学习
- thinkphp 静态 伪静态 路由
- 90. php 命名空间