php生成文件并下载文件,PHP代码生成文件并直接下载

前几天刚给Z-blog的用户中心插件加入了导出邀请码并以文件的形式进行下载的功能,用户们反馈过来的使用效果不错,所以今天无事,就把部份代码发出来,做个笔记。代码已进行测试,安全可用,有需要的小伙伴可以直接拿去用就可以。

PHP生成文件并下载的代码

代码如下:<?php

header("Content-Type: application/octet-stream");

$center= '这里是需要生成文件的内容';

$ua = $_SERVER["HTTP_USER_AGENT"];

$filename = "mochu.txt";//生成的文件名

$encoded_filename = urlencode($filename);

$encoded_filename = str_replace("+", "%20", $encoded_filename);

if (preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT']) ) {

header('Content-Disposition:  attachment; filename="' . $encoded_filename . '"');

} elseif (preg_match("/Firefox/", $_SERVER['HTTP_USER_AGENT'])) {

// header('Content-Disposition: attachment; filename*="utf8' .  $filename . '"');

header('Content-Disposition: attachment; filename*="' .  $filename . '"');

} else {

header('Content-Disposition: attachment; filename="' .  $filename . '"');

}

echo $center;

?>

以上就是PHP代码生成文件并下载的功能代码,在火狐,谷歌,IE10以上的浏览器内测试正常。

ad39c200ca74fa022c83aaaf36aec339.png

可以更改成下载其它格式文件

其中下载的文件后缀名可以更改,比如下载CSV格式的文件,

代码如下$filename = "mochu.txt";//生成的文件名

更改后的代码$filename = "mochu.csv";//生成的文件名

拦截下载

如果没有内容可供用户下载,我们可以在执行下载功能前进行拦截操作,上面的代码可以修改一下,具体代码如下

代码<?php

if($center == ''){

echo '无内容,无法下载'

exit;

//如果没有内容可供下载,这里可以写入判断代码,比如打开一个提示页等

}else{

$center= '这里是需要生成文件的内容';

}

header("Content-Type: application/octet-stream");

$ua = $_SERVER["HTTP_USER_AGENT"];

$filename = "mochu.txt";//生成的文件名

$encoded_filename = urlencode($filename);

$encoded_filename = str_replace("+", "%20", $encoded_filename);

if (preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT']) ) {

header('Content-Disposition:  attachment; filename="' . $encoded_filename . '"');

} elseif (preg_match("/Firefox/", $_SERVER['HTTP_USER_AGENT'])) {

// header('Content-Disposition: attachment; filename*="utf8' .  $filename . '"');

header('Content-Disposition: attachment; filename*="' .  $filename . '"');

} else {

header('Content-Disposition: attachment; filename="' .  $filename . '"');

}

echo $center;

?>

如果没有内容可供下载,你可以判断内容是否为空的代码里面加入美化后的HTML代码进行提示,也可以加载提示页面的形式展示给用户。

注意事项

注意:由于以上代码是在后台进行,下载文件的时候需要打开一个新的页面才执行下载,所以在前端请求的时候,不能以AJAX的方式进行请求,要以A链接新开页打开方式,或form提交的方式请求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值