Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das Problem verstümmelter PHP-Downloaddateien

So lösen Sie das Problem verstümmelter PHP-Downloaddateien

藏色散人
藏色散人Original
2020-12-02 09:49:542454Durchsuche

Lösungen für verstümmelte PHP-Downloaddateien: 1. Verwenden Sie die Flush-Funktion, um den Ausgabepuffer zu aktualisieren und das Problem des verstümmelten Inhalts von PHP-Downloaddateien zu lösen. 2. Verwenden Sie die Funktion ob_clean, um den Ausgabepuffer zu löschen und das Problem des verstümmelten Inhalts zu lösen von PHP-Downloaddateien.

So lösen Sie das Problem verstümmelter PHP-Downloaddateien

Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP Version 7.1. Diese Methode ist für alle Computermarken geeignet.

Empfohlen: „PHP-Video-Tutorial

PHP verwendet Dateistream zum Herunterladen von Dateien (angehängt: Beheben Sie das Problem des verstümmelten heruntergeladenen Dateiinhalts)

1. Flush – Aktualisieren Sie den Ausgabepuffer

2. Ausgabepuffer löschen (löschen)

Diese Funktion wird verwendet, um den Inhalt des Ausgabepuffers zu verwerfen.

Diese Funktion zerstört den Ausgabepuffer nicht, aber Funktionen wie ob_end_clean() zerstören den Ausgabepuffer.

Hinweis: Die beiden oben genannten Funktionen können das Problem des verstümmelten Inhalts von PHP-Downloaddateien lösen

Der Code lautet wie folgt

// 文件名不要用中文
//fname为要下载的文件名
    //$fpath为下载文件所在文件夹,默认是downlod
    function download($fname,$fpath="download/"){
        //避免中文文件名出现检测不到文件名的情况,进行转码utf-8->gbk
        $filename=iconv('utf-8', 'gb2312', $fname);
        $path=$fpath.$filename;
        if(!file_exists($path)){//检测文件是否存在
            echo "文件不存在!";
            die();
        }
        $fp=fopen($path,'r');//只读方式打开
        $filesize=filesize($path);//文件大小
        //返回的文件(流形式)
        header("Content-type: application/octet-stream");
        //按照字节大小返回
        header("Accept-Ranges: bytes");
        //返回文件大小
        header("Accept-Length: $filesize");
        //这里客户端的弹出对话框,对应的文件名
        header("Content-Disposition: attachment; filename=".$filename);
        //================重点====================
        ob_clean();
        flush();
        //=================重点===================
        //设置分流
        $buffer=1024;
        //来个文件字节计数器
        $count=0;
        while(!feof($fp)&&($filesize-$count>0)){
            $data=fread($fp,$buffer);
            $count+=$data;//计数
            echo $data;//传数据给浏览器端
        }
        fclose($fp);
    }
    download("CGEX脚本清单.doc");

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter PHP-Downloaddateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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