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

Patricia Arquette
Libérer: 2024-11-10 11:53:02
original
903 Les gens l'ont consulté

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!';
}
Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal