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.
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);
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);
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!