Maison  >  Article  >  développement back-end  >  Comment résoudre le problème des fichiers de téléchargement php tronqués

Comment résoudre le problème des fichiers de téléchargement php tronqués

藏色散人
藏色散人original
2020-12-02 09:49:542403parcourir

Solutions au contenu tronqué des fichiers de téléchargement PHP : 1. Utilisez la fonction flush pour actualiser le tampon de sortie afin de résoudre le problème du contenu tronqué des fichiers de téléchargement PHP 2. Utilisez la fonction ob_clean pour effacer le tampon de sortie ; pour résoudre le problème du contenu tronqué des fichiers téléchargés PHP.

Comment résoudre le problème des fichiers de téléchargement php tronqués

L'environnement d'exploitation de ce tutoriel : Système Windows 7, PHP version 7.1 Cette méthode convient à toutes les marques d'ordinateurs.

Recommandé : "Tutoriel vidéo PHP"

Méthode PHP d'utilisation du flux de fichiers pour télécharger des fichiers (ci-joint : résolution du problème du contenu tronqué des fichiers téléchargés)

1. flush - actualiser le tampon de sortie

2. ob_clean - effacer (effacer) le tampon de sortie

Cette fonction est utilisée pour supprimer le contenu du tampon de sortie.

Cette fonction ne détruira pas le tampon de sortie, mais des fonctions comme ob_end_clean() détruiront le tampon de sortie.

Remarque : les deux fonctions ci-dessus peuvent résoudre le problème du contenu tronqué des fichiers téléchargés PHP

Le code est le suivant

// 文件名不要用中文
//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");

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn