Maison >développement back-end >Problème PHP >Comment résoudre le problème de ne pas obtenir la taille du fichier lors du téléchargement de PHP

Comment résoudre le problème de ne pas obtenir la taille du fichier lors du téléchargement de PHP

PHPz
PHPzoriginal
2023-04-11 10:42:391242parcourir

Lorsque vous utilisez PHP pour télécharger des fichiers, vous pouvez parfois rencontrer le problème de ne pas pouvoir obtenir la taille du fichier. Ce problème peut survenir pour les raisons suivantes :

  1. Le serveur ne prend pas en charge l'obtention de la taille du fichier. Dans certains cas, le serveur peut ne pas prendre en charge l'obtention d'informations sur la taille des fichiers. À l'heure actuelle, lorsque vous utilisez PHP pour télécharger des fichiers, la taille du fichier ne sera pas obtenue.
  2. L'environnement réseau est instable. Lors du téléchargement de fichiers volumineux, vous rencontrez souvent un environnement réseau instable. À l'heure actuelle, il est tout à fait possible de commettre une erreur lors de l'obtention de la taille du fichier en PHP.

Alors comment résoudre ce problème ? Voici quelques solutions pour référence :

  1. Utilisez CURL pour obtenir la taille du fichier. Vous pouvez utiliser la bibliothèque de fonctions CURL pour obtenir des informations sur la taille du fichier. L'exemple de code est le suivant :
$url = 'http://example.com/file.zip';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
$fileSize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
  1. Obtenez directement l'en-tête de réponse du serveur pour obtenir la taille du fichier. Utilisez la fonction stream_context_set_default de PHP pour définir l'en-tête http par défaut et obtenir directement les informations sur la taille du fichier. L'exemple de code est le suivant :
$url = 'http://example.com/file.zip';
$opts = array(
  'http' => array(
    'method' => 'HEAD'
  )
);
$context = stream_context_create($opts);
$fp = fopen($url, 'r', false, $context);
$meta = stream_get_meta_data($fp);
foreach ($meta['wrapper_data'] as $value) {
  if (stristr($value, 'content-length')) {
    $content_length = (int) trim(substr($value, 15));
  }
}
fclose($fp);

En résumé, pour résoudre le problème de PHP qui ne peut pas obtenir la taille du fichier lors du téléchargement de fichiers. , vous pouvez utiliser CURL ou directement Obtenir l'en-tête de réponse du serveur pour obtenir la taille du fichier. Ces méthodes peuvent aider les développeurs PHP à mieux gérer et contrôler le processus de téléchargement de fichiers, améliorant ainsi l'expérience utilisateur et les performances des applications.

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