Comment résoudre le problème selon lequel les gros fichiers php ne peuvent pas être téléchargés

藏色散人
Libérer: 2023-03-06 17:10:01
original
2971 Les gens l'ont consulté

La solution au problème selon lequel les gros fichiers PHP ne peuvent pas être téléchargés : obtenez d'abord le nom du fichier à télécharger ; puis définissez le temps d'exécution maximum du script via la méthode "set_time_limit(0);" vider le cache.

Comment résoudre le problème selon lequel les gros fichiers php ne peuvent pas être téléchargés

Recommandé : "Tutoriel vidéo PHP"

Je travaille actuellement sur un système de téléchargement de photos et j'ai besoin de télécharger photos du client Descendez, puis effectuez une retouche photo PS, mais le fichier téléchargé doit être le fichier CR2 d'origine de l'appareil photo. Ce type de fichier est généralement relativement volumineux. Généralement, une photo est trop petite, environ 30 Mo. Je n'y ai pas prêté attention une fois le téléchargement terminé. Désormais, les photos téléchargées par le système de réaction ne peuvent pas être ouvertes par Photoshop. Au début, j'ai pensé que c'était parce que Camera Raw n'était pas installé dans le logiciel. Après avoir installé le plug-in, j'ai constaté qu'il ne pouvait toujours pas être ouvert. Enfin, j'ai comparé l'image téléchargée avec l'image téléchargée. beaucoup plus petite que l'image originale. À ce moment-là, j'ai trouvé que l'image téléchargée était probablement incomplète. Après une recherche sur Baidu, j'ai découvert qu'il s'agissait d'un problème avec le temps d'exécution du script PHP. La valeur par défaut est de 30 secondes et le problème peut être résolu après avoir défini une configuration.

set_time_limit(0); signifie aucune limite de temps, je publierai donc mon code de téléchargement ci-dessous. Vous pouvez utiliser cette fonction directement

//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);
 
}
Copier après la connexion

J'espère qu'elle pourra vous aider à résoudre le problème

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!