php利用header实现文件下载代码
在php中如果要实现下载如图片文件,php文件,html文件这些文件我们如果在网站上点击都是直接打开了,如果要实现下载我们可以利用php header函数来操作.
例1,代码如下:
function download( $file_url , $new_name = '' ){ if (!isset( $file_url ) || trim( $file_url )== '' ){ return '500' ; } if (! file_exists ( $file_url )) { //检查文件是否存在 return '404' ; } $file_name = basename ( $file_url ); $file_type = explode ( '.' , $file_url ); $file_type = $file_type [ count ( $file_type )-1]; $file_name =trim( $new_name == '' )? $file_name :urlencode( $new_name ). '.' . $file_type ; $file_type = fopen ( $file_url , 'r' ); //打开文件 //输入文件标签 header( "Content-type: application/octet-stream" ); header( "Accept-Ranges: bytes" ); header( "Accept-Length: " . filesize ( $file_url )); header( "Content-Disposition: attachment; filename=" . $file_name ); //输出文件内容 echo fread ( $file_type , filesize ( $file_url )); fclose( $file_type ); }例2, 以下php代码可以解决:
<? if ( empty empty ( $_GET [ 'FileName' ])|| empty empty ( $_GET [ 'FileDir' ])|| empty empty ( $_GET [ 'FileId' ])){ echo '<script> alert("非法连接 !"); location.replace ("index.php") </script>' ; exit (); } $file_name = $_GET [ 'FileName' ]; $file_dir = $_GET [ 'FileDir' ]; $FileId = $_GET [ 'FileId' ]; $file_dir = $file_dir . "/" ; if (! file_exists ( $file_dir . $file_name )) { //检查文件是否存在 echo "文件找不到" ; exit ; } else { $file = fopen ( $file_dir . $file_name , "r" ); // 打开文件 // 输入文件标签 Header( "Content-type: application/octet-stream" ); Header( "Accept-Ranges: bytes" ); Header( "Accept-Length: " . filesize ( $file_dir . $file_name )); Header( "Content-Disposition: attachment; filename=" . $file_name ); // 输出文件内容 echo fread ( $file , filesize ( $file_dir . $file_name )); fclose( $file ); exit (); } ?>直接下载文件,代码如下:
<?php $file = get_file_address(); // 文件的真实地址(支持url,不过不建议用url) if ( file_exists ( $file )) { header( 'Content-Description: File Transfer' ); header( 'Content-Type: application/octet-stream' ); header( 'Content-Disposition: attachment; filename=' . basename ( $file )); header( 'Content-Transfer-Encoding: binary' ); header( 'Expires: 0' ); header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' ); header( 'Pragma: public' ); header( 'Content-Length: ' . filesize ( $file )); ob_clean(); flush (); readfile( $file ); exit ; } ?>小提示 ,header函数不只是可以实现文件下载,他还有很多的功能,如发送404,301等等状态信息都是可以的.
注意:在使用header之前我们必须在header之前没有任何输出,否则就会报错.
查看更多关于php利用header实现文件下载代码 - php上传下载的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29360