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以上的欣赏器内测试正常。

QQ截图20181212140326.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提交的方法请求。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9187.html