Heim >Backend-Entwicklung >PHP-Tutorial >php 强制文件下载的实现代码一例

php 强制文件下载的实现代码一例

WBOY
WBOYOriginal
2016-07-25 09:00:33870Durchsuche
php 强制文件下载的代码,老外写的,转摘到程序员之家,供大家学习参考。

例子如下:

<?php
$file = 'monkey.gif';

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');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

例2,

<?php
$file = '/var/www/html/file-to-download.xyz';
header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename=' . basename($file));
readfile($file);
?>

例3,readfile with accurate limit rate, using pv linux command

<?php
$file = $_SERVER['QUERY_STRING'];
header("Content-length: ".filesize($file));
header("Content-type: ".mime_content_type($file));
readfileLimit($file);

function readfileLimit($file, $limit='10M')
{
    $f = popen("pv -L $limit '$file'",'r') or return false;
    while(!feof($f))
    {
        echo fread($f, 1024);
        flush();
    }
    fclose($f);
}
?>

例4,解决ie下中文文件名乱码问题)

<?php
  $filename = $_GET['filename'];
   $file = './download/'.$filename;
    $rename = ($_GET['rename']=="") ? $filename : $_GET['rename'];           

    header('Content-Type: application/force-download');
    header("Content-Type: application/octet-stream");        
    header('Content-Length: ' . filesize($file)); 
      
    $ua = $_SERVER["HTTP_USER_AGENT"];  //判断浏览器类型  
    if (preg_match("/MSIE/", $ua)) {
        $rename = iconv("gb2312","UTF-8",$rename);    
        $encoded_filename = urlencode($rename);    
        $encoded_filename = str_replace("+", " ", $encoded_filename);        
        
        header('Content-Disposition: attachment; filename="' . $encoded_filename . '"');    
    } else if (preg_match("/Firefox/", $ua)) {    
        header('Content-Disposition: attachment; filename*="utf8\'\'' . $rename . '"');    
    } else {    
        header('Content-Disposition: attachment; filename="' . $rename . '"');    
    }     
    
    readfile($file);
    exit;
?>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn