《PHP学习:PHP下载文件的函数实例代码》要点:
本文介绍了PHP学习:PHP下载文件的函数实例代码,希望对您有用。如果有疑问,可以联系我们。
PHP应用通过函数完成下载文件的PHP功能代码
- PHP应用
- function download($url, $filename) {
- // 获得文件大小, 防止超过2G的文件, 用sprintf来读
- $filesize = sprintf ( "%u", filesize ( $url ) );
- if (! $filesize) {
- return;
- }
- header ( "Content-type:application/octet-stream\n" ); //application/octet-stream
- header ( "Content-type:unknown/unknown;" );
- header ( "Content-disposition: attachment; filename=\"" . $filename . "\"" );
- header ( 'Content-transfer-encoding: binary' );
- if ($range = getenv ( 'HTTP_RANGE' )) { // 当有偏移量的时候,采用206的断点续传头
- $range = explode ( '=', $range );
- $range = $range [1];
- header ( "HTTP/1.1 206 Partial Content" );
- header ( "Date: " . gmdate ( "D, d M Y H:i:s" ) . " GMT" );
- header ( "Last-Modified: " . gmdate ( "D, d M Y H:i:s", filemtime ( $url ) ) . " GMT" );
- header ( "Accept-Ranges: bytes" );
- header ( "Content-Length:" . ($filesize - $range) );
- header ( "Content-Range: bytes " . $range . ($filesize - 1) . "/" . $filesize );
- header ( "Connection: close" . "\n\n" );
- else {
- header ( "Content-Length:" . $filesize . "\n\n" );
- $range = 0; }
- loadFile ( $url );}
- function loadFile($filename, $retbytes = true) {
- $buffer = ''; $cnt = 0; $handle = fopen ( $filename, 'rb' );
- if ($handle === false) { return false;
- } while ( ! feof ( $handle ) ) {
- $buffer = fread ( $handle, 1024 * 1024 );
- echo $buffer;
- ob_flush ();
- flush ();
- if ($retbytes) {
- $cnt += strlen ( $buffer );
- }
- }
- $status = fclose ( $handle );
- if ($retbytes && $status) {
- return $cnt; // return num. bytes delivered like readfile() does.
- }
- return $status;}
PHP应用输入2个参数即可完成下载 download($url, $filename)
PHP应用以上所述是小编给大家介绍的PHP下载文件的函数实例代码的相关知识,希望对大家有所赞助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对维易PHP网站的支持!
转载请注明本页网址:
http://www.vephp.com/jiaocheng/6588.html