国产视频app前幾天剛給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;
?>

国产视频app如果沒有內容可供下載,你可以判斷內容是否為空的代碼里面加入美化后的HTML代碼進行提示,也可以加載提示頁面的形式展示給用戶。

注意事項

注意:由于以上代碼是在后臺進行,下載文件的時候需要打開一個新的頁面才執行下載,所以在前端請求的時候,不能以AJAX的方式進行請求,要以A鏈接新開頁打開方式,或form提交的方式請求。