Maison > développement back-end > Problème PHP > Que faire si php ne parvient pas à télécharger des fichiers volumineux

Que faire si php ne parvient pas à télécharger des fichiers volumineux

藏色散人
Libérer: 2023-03-05 06:18:01
original
2911 Les gens l'ont consulté

Solution au problème selon lequel php ne peut pas télécharger de gros fichiers : recherchez et ouvrez d'abord le fichier "php.ini" ; puis définissez la "memory_limit" sur 1024M, puis envoyez les données au navigateur client.

Que faire si php ne parvient pas à télécharger des fichiers volumineux

Recommandé : "Tutoriel vidéo PHP"

Résoudre le problème de l'impossibilité de télécharger des fichiers volumineux utiliser PHP

Dans les applications réelles, il existe une limite de taille lors de l'utilisation de la fonction fread() de PHP pour lire les fichiers du serveur. Lorsque la taille du fichier du serveur dépasse un certain montant (128 Mo ?), le navigateur client ne peut pas télécharger le fichier. Est-ce à cause de la limite memory_limit dans le fichier de configuration php.ini ?

Après avoir défini la limite de mémoire sur 1024 Mo, j'ai testé un fichier de 180 Mo et j'ai constaté que le problème persistait. Code :

header('content-type:application/octet-stream');
            header('accept-ranges: bytes');
            header('content-length: '.filesize($filePath));
            header('content-disposition:attachment;filename='.$fileName);
            $fp = fopen($filePath, "r");
            echo fread($fp, filesize($filePath));
            fclose($fp);
Copier après la connexion

La méthode de lecture ci-dessus consiste à envoyer les données vers le navigateur client en une seule fois. . Est-ce que ça a quelque chose à voir avec ça ? Essayez de lire le fichier ligne par ligne :

header('content-type:application/octet-stream');
            header('accept-ranges: bytes');
            header('content-length: '.filesize($filePath));
            header('content-disposition:attachment;filename='.$fileName);
            $fp = fopen($filePath, "r");
            while(!feof($fp)) {
                echo fgets($fp, 4096);
            }
           fclose($fp);
Copier après la connexion

Aha ! Plus de 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