php输出非html格式文件的总结

php中文网
发布: 2016-07-25 09:05:31
原创
1572人浏览过
  1. $file = 'a.pdf';
  2. if (file_exists($file)) {
  3. header('Content-Description: File Transfer');
  4. header('Content-Type: application/octet-stream');
  5. header('Content-Disposition: attachment; filename='.basename($file));
  6. header('Content-Transfer-Encoding: binary');
  7. header('Expires: 0');
  8. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  9. header('Pragma: public');
  10. b_clean();
  11. flush();
  12. readfile($file);
  13. exit;
  14. }
  15. ?>
复制代码

2. 输出生成的文件(如:csv pdf等) 有时候系统那个会输出生成的文件,主要生成csv,pdf,或者打包多个文件为zip格式下载,对于这部分,有些实现方法是将生成的输出成文件再通过文件方式下载,最后删除生成文件,其实可以通过php://output 直接输出生成文件,下面以csv输出为例。

  1. header('Content-Description: File Transfer');
  2. header('Content-Type: application/octet-stream');
  3. header('Content-Disposition: attachment; filename=a.csv');
  4. header('Content-Transfer-Encoding: binary');
  5. header('Expires: 0');
  6. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  7. header('Pragma: public');
  8. ob_clean();
  9. flush();
  10. $rowarr=array(array('1','2','3'),array('1','2','3'));
  11. $fp=fopen('php://output', 'w');
  12. foreach($rowarr as $row){
  13. fputcsv($fp, $row);
  14. }
  15. fclose($fp);
  16. exit;
  17. ?>
复制代码

3. 获取生成文件内容,做处理后输出 获取生成文件的内容一般是先生成文件,然后读取,最后删除,其实这个可以使用php://temp来做操作,以下仍以csv举例

  1. header('Content-Description: File Transfer');
  2. header('Content-Type: application/octet-stream');
  3. header('Content-Disposition: attachment; filename=a.csv');
  4. header('Content-Transfer-Encoding: binary');
  5. header('Expires: 0');
  6. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  7. header('Pragma: public');
  8. ob_clean();
  9. flush();
  10. $rowarr=array(array('1','2','中文'),array('1','2','3'));
  11. $fp=fopen('php://temp', 'r+');
  12. foreach($rowarr as $row){
  13. fputcsv($fp, $row);
  14. }
  15. rewind($fp);
  16. $filecontent=stream_get_contents($fp);
  17. fclose($fp);
  18. //处理 $filecontent内容
  19. $filecontent=iconv('UTF-8','GBK',$filecontent);
  20. echo $filecontent; //输出
  21. exit;
  22. ?>
复制代码

php中的input/output streams功能十分的强大,用好了,能够简化编码,提高效率,建议大家专入一下哦。

BibiGPT-哔哔终结者
BibiGPT-哔哔终结者

B站视频总结器-一键总结 音视频内容

BibiGPT-哔哔终结者 28
查看详情 BibiGPT-哔哔终结者


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号