Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem, dass große PHP-Dateien nicht heruntergeladen werden können

So lösen Sie das Problem, dass große PHP-Dateien nicht heruntergeladen werden können

藏色散人
藏色散人Original
2020-10-15 10:52:162939Durchsuche

Lösung für das Problem, dass große PHP-Dateien nicht heruntergeladen werden können: Ermitteln Sie zunächst den Namen der herunterzuladenden Datei. Legen Sie dann die maximale Ausführungszeit des Skripts über die Methode „set_time_limit(0)“ fest .

So lösen Sie das Problem, dass große PHP-Dateien nicht heruntergeladen werden können

Empfehlung: „PHP-Video-Tutorial

Vor Kurzem arbeite ich an einem Foto-Download-System und muss dann die PS-Fotobearbeitung durchführen, aber die heruntergeladene Datei muss die sein Original-Kameradatei CR2-Dokument. Diese Art von Datei ist im Allgemeinen zu klein, etwa 30 MB. Nach Abschluss des Downloads können die vom Reaktionssystem heruntergeladenen Fotos nicht geöffnet werden Zuerst dachte ich, es läge daran, dass die Software nicht installiert war. Nach der Installation des Plug-Ins konnte ich das heruntergeladene Bild immer noch mit dem Bild vor dem Hochladen vergleichen Viel kleiner als das Originalbild. Zu diesem Zeitpunkt stellte ich fest, dass das heruntergeladene Bild wahrscheinlich unvollständig war. Nach der Suche auf Baidu stellte ich fest, dass es ein Problem mit der Ausführungszeit des PHP-Skripts war. Der allgemeine Standardwert beträgt 30 Sekunden. Das Problem kann nach dem Festlegen einer Konfiguration behoben werden.

set_time_limit(0); bedeutet keine zeitliche Begrenzung, daher werde ich unten meinen Download-Code veröffentlichen. Sie können diese Funktion direkt nutzen

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

Ich hoffe, sie kann Ihnen bei der Lösung Ihres Problems helfen

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass große PHP-Dateien nicht heruntergeladen werden können. 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