前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP生成文件并直接下载

PHP生成文件并直接下载

作者头像
C4rpeDime
发布2020-01-20 10:42:02
1.8K0
发布2020-01-20 10:42:02
举报
文章被收录于专栏:黑白安全黑白安全

PHP生成文件并下载的代码

代码如下:

代码语言:javascript
复制
<?phpheader("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以上的浏览器内测试正常。

PHP生成文件并直接下载
PHP生成文件并直接下载

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

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

代码如下

代码语言:javascript
复制
$filename = "heibai.txt";//生成的文件名

更改后的代码

代码语言:javascript
复制
$filename = "heibai.csv";//生成的文件名

拦截下载

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

代码

代码语言:javascript
复制
<?phpif($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提交的方式请求。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-255,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP生成文件并下载的代码
  • 可以更改成下载其它格式文件
  • 拦截下载
  • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档