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

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

WBOY
Freigeben: 2016-07-25 09:00:33
Original
869 Leute haben es durchsucht
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;
}
?>
Nach dem Login kopieren

例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);
?>
Nach dem Login kopieren

例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);
}
?>
Nach dem Login kopieren

例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;
?>
Nach dem Login kopieren


Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage