好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php利用header实现文件下载代码 - php上传下载

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上传下载的详细内容...

  阅读:76次