Maison >développement back-end >tutoriel php >Comment garantir des téléchargements fiables de fichiers volumineux en PHP ?

Comment garantir des téléchargements fiables de fichiers volumineux en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-10 11:53:02941parcourir

How to Ensure Reliable Large File Downloads in PHP?

Téléchargements fiables de fichiers volumineux en PHP

En PHP, le transfert transparent de fichiers volumineux pose un défi. Pour garantir l'intégrité des fichiers pendant les téléchargements, il est crucial d'explorer des alternatives à l'approche classique de lecture de fichiers (fread).

Options pour des transferts de fichiers améliorés

Envisagez d'utiliser des fonctions telles que http_send_file et http_send_data. Ces fonctions gèrent la transmission de fichiers plus efficacement, résolvant potentiellement les problèmes associés à l'utilisation de fread.

Groupement de fichiers

Si des options plus professionnelles ne sont pas disponibles, le regroupement de fichiers est une solution pratique. . En divisant le fichier en segments plus petits, PHP peut les transmettre de manière incrémentielle, réduisant ainsi le risque d'erreurs. Le code suivant montre comment mettre en œuvre cette technique :

$chunksize = 5 * (1024 * 1024); // 5 MB per chunk

if (file_exists($filename)) {
  header('Content-Length: ' . filesize($filename));

  if (filesize($filename) > $chunksize) {
    $handle = fopen($filename, 'rb');

    while (!feof($handle)) {
      print(@fread($handle, $chunksize));

      ob_flush();
      flush();
    }

    fclose($handle);
  } else {
    readfile($path);
  }

  exit;
} else {
  echo 'File "' . $filename . '" does not exist!';
}

N'oubliez pas de vous assurer que votre fichier est enregistré au format UTF-8 pour éviter toute corruption pendant le processus de téléchargement.

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