Table des matières
Éclater la limite de 48 Mo: résolvez le problème du téléchargement de tranches de fichiers
Analyse des problèmes
Optimisation du code frontal
Améliorations du code backend
Vérification de la configuration du serveur
Résumé et suggestions
Maison développement back-end tutoriel php Comment résoudre le problème que le téléchargement de la tranche de fichiers de gros ne peut pas traiter les fichiers supérieurs à 48 Mo?

Comment résoudre le problème que le téléchargement de la tranche de fichiers de gros ne peut pas traiter les fichiers supérieurs à 48 Mo?

Apr 01, 2025 pm 01:39 PM
apache 500错误

Comment résoudre le problème que le téléchargement de la tranche de fichiers de gros ne peut pas traiter les fichiers supérieurs à 48 Mo?

Éclater la limite de 48 Mo: résolvez le problème du téléchargement de tranches de fichiers

Pendant le processus de téléchargement de tranches de fichiers importantes, rencontrez-vous une situation où plus de 48 Mo de fichiers ne peuvent pas être traités? Cet article analysera la cause profonde du problème et fournira des solutions dans la configuration frontale, back-end et serveur.

Analyse des problèmes

Lors du téléchargement d'un grand fichier, après la 48e tranche (environ 48 Mo), la demande suivante renvoie 500 erreurs. Même si la taille de la tranche est ajustée, la limite de 40 Mo ne peut pas être dépassée. Cela indique que le problème peut se situer dans la logique de traitement côté serveur ou de back-end et nécessite un dépannage approfondi.

Optimisation du code frontal

Tout d'abord, vérifiez le code frontal. Le code précédent peut utiliser le même objet FormData chaque fois que la tranche est envoyée, ce qui fait dépasser la limite du serveur.

Solution: recréez l'objet FormData chaque fois que la fonction de téléchargement est appelée. De cette façon, chaque demande ne contient que les données de tranche actuelles, en évitant l'accumulation de données.

Exemple d'extrait de code (fonction sendfile améliorée):

 fonction sendFile (blob, fichier) {
    if (is_stop == 0) {
        var xhr = new xmlHttpRequest ();
        var form_data = new formData (); // recréer l'objet formdata var total_blob_num = math.ceil (file.size / longueur);
        form_data.append ('fichier', blob);
        form_data.append ('blob_num', blob_num);
        form_data.append ('total_blob_num', total_blob_num);
        form_data.append ('file_name', file.name);

        xhr.open ('post', '/upload.php', false);
        xhr.onreadystateChange = function () {
            // ... (le reste du code reste le même) ...
        };
        xhr.send (form_data); // Envoi de la demande}
}
Copier après la connexion

Améliorations du code backend

Le code backend peut entraîner un débordement de mémoire en raison du traitement des fichiers gros directement en mémoire. Il est recommandé d'utiliser le streaming ou la fusion temporaire de fichiers . Enregistrez chaque tranche dans un fichier temporaire et fusionnez-le dans le fichier final.

Exemple d'extrait de code (PHP, fonction fileMerge améliorée):

 fonction privée fileMerge () {
    if ($ this-> blobnum == $ this-> totalblobnum) {
        $ out = fopen ($ this-> filepath. '/'. $ this-> nom de fichier, 'wb'); // Utilisez le mode 'WB' pour assurer la sécurité binaire pour ($ i = 1; $ i  totalblobnum; $ i) {
            $ chunk = fopen ($ this-> filepath. '/'. $ this-> nom de fichier. '__'. $ i, 'rb'); // Utilisez le mode 'RB' pour lire des données binaires Stream_Copy_To_Stream ($ Chunk, $ out); // Utilisez Stream_Copy_To_Stream pour copier efficacement fclose ($ chunk);
            @unlink ($ this-> filepath. '/'. $ this-> nom de fichier. '__'. $ i);
        }
        fclose ($ out);
    }
}
Copier après la connexion

Vérification de la configuration du serveur

Même avec le code frontal et le code back-end a été modifié, le problème peut encore exister. Les configurations de serveur suivantes doivent être vérifiées:

  1. Paramètre LimitRequestBody d'Apache: assurez-vous que cette valeur est suffisamment grande pour permettre le téléchargement de fichiers volumineux.
  2. PHP upload_max_filesize et post_max_size Paramètres: ces deux valeurs doivent être supérieures à la taille du fichier téléchargé.
  3. Paramètre memory_limit de PHP: Si le backend traite les fichiers en mémoire, cette valeur doit être augmentée.

Résumé et suggestions

Pour résoudre le problème du téléchargement de découpage de fichiers grand, il est nécessaire d'examiner de manière approfondie les configurations frontales, back-end et serveur. En recréant des objets FormData, à l'aide de streaming ou de fusion de fichiers temporaires et ajusté la configuration du serveur, le problème du téléchargement de fichiers supérieur à 48 Mo peut être résolu efficacement et la fonction efficace de téléchargement de fichiers grand peut être obtenue.

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1653
14
Tutoriel PHP
1251
29
Tutoriel C#
1224
24
Comment définir le répertoire CGI dans Apache Comment définir le répertoire CGI dans Apache Apr 13, 2025 pm 01:18 PM

Pour configurer un répertoire CGI dans Apache, vous devez effectuer les étapes suivantes: Créez un répertoire CGI tel que "CGI-Bin" et accorder des autorisations d'écriture Apache. Ajoutez le bloc directif "Scriptalias" dans le fichier de configuration Apache pour mapper le répertoire CGI à l'URL "/ cgi-bin". Redémarrez Apache.

Comment se connecter à la base de données d'Apache Comment se connecter à la base de données d'Apache Apr 13, 2025 pm 01:03 PM

Apache se connecte à une base de données nécessite les étapes suivantes: Installez le pilote de base de données. Configurez le fichier web.xml pour créer un pool de connexion. Créez une source de données JDBC et spécifiez les paramètres de connexion. Utilisez l'API JDBC pour accéder à la base de données à partir du code Java, y compris l'obtention de connexions, la création d'instructions, les paramètres de liaison, l'exécution de requêtes ou de mises à jour et de traitement des résultats.

Comment afficher votre version Apache Comment afficher votre version Apache Apr 13, 2025 pm 01:15 PM

Il existe 3 façons d'afficher la version sur le serveur Apache: via la ligne de commande (apachectl -v ou apache2ctl -v), cochez la page d'état du serveur (http: // & lt; serveur ip ou nom de domaine & gt; / server-status), ou afficher le fichier de configuration Apache (serverVeelion: apache / & lt; version & gt;).

Que faire si le port Apache80 est occupé Que faire si le port Apache80 est occupé Apr 13, 2025 pm 01:24 PM

Lorsque le port Apache 80 est occupé, la solution est la suivante: découvrez le processus qui occupe le port et fermez-le. Vérifiez les paramètres du pare-feu pour vous assurer qu'Apache n'est pas bloqué. Si la méthode ci-dessus ne fonctionne pas, veuillez reconfigurer Apache pour utiliser un port différent. Redémarrez le service Apache.

Comment afficher la version Apache Comment afficher la version Apache Apr 13, 2025 pm 01:00 PM

Comment afficher la version Apache? Démarrez le serveur Apache: utilisez le service sudo apache2 Démarrez pour démarrer le serveur. Afficher le numéro de version: utilisez l'une des méthodes suivantes pour afficher la version: ligne de commande: exécutez la commande apache2 -v. Page d'état du serveur: accédez au port par défaut du serveur Apache (généralement 80) dans un navigateur Web, et les informations de version s'affichent en bas de la page.

Comment résoudre le problème qu'Apache ne peut pas être démarré Comment résoudre le problème qu'Apache ne peut pas être démarré Apr 13, 2025 pm 01:21 PM

Apache ne peut pas démarrer car les raisons suivantes peuvent être: Erreur de syntaxe du fichier de configuration. Conflit avec d'autres ports de demande. Problème d'autorisations. Hors de la mémoire. Traitement dans l'impasse. Échec du démon. Problèmes d'autorisations de Selinux. Problème de pare-feu. Conflit logiciel.

Comment configurer Zend pour Apache Comment configurer Zend pour Apache Apr 13, 2025 pm 12:57 PM

Comment configurer Zend dans Apache? Les étapes pour configurer Zend Framework dans un serveur Web Apache sont les suivantes: installer Zend Framework et l'extraire dans le répertoire du serveur Web. Créez un fichier .htaccess. Créez le répertoire d'application Zend et ajoutez le fichier index.php. Configurez l'application Zend (application.ini). Redémarrez le serveur Web Apache.

Comment supprimer plus que les noms de serveurs d'Apache Comment supprimer plus que les noms de serveurs d'Apache Apr 13, 2025 pm 01:09 PM

Pour supprimer une directive de nom de serveur supplémentaire d'Apache, vous pouvez prendre les étapes suivantes: Identifier et supprimer la directive supplémentaire de serveur. Redémarrez Apache pour que les modifications prennent effet. Vérifiez le fichier de configuration pour vérifier les modifications. Testez le serveur pour vous assurer que le problème est résolu.

See all articles