Maison > développement back-end > tutoriel php > Comment puis-je activer les téléchargements pouvant être repris avec un script PHP ?

Comment puis-je activer les téléchargements pouvant être repris avec un script PHP ?

Susan Sarandon
Libérer: 2024-12-18 10:33:14
original
863 Les gens l'ont consulté

How Can I Enable Resumable Downloads with a PHP Script?

Prise en charge des téléchargements pouvant être repris avec les scripts PHP

Question :
Lors de l'utilisation d'un script PHP pour envoyer des fichiers téléchargeables , les téléchargements ne peuvent pas être repris par les utilisateurs finaux. Comment les téléchargements avec reprise peuvent-ils être pris en charge avec une telle solution ?

Réponse :

Pour activer les téléchargements avec reprise, suivez ces étapes :

  1. Envoyer les plages d'acceptation : octets en-tête :

    • Cet en-tête informe le client que vous prenez en charge le contenu partiel.
  2. Gérer les en-têtes de plage :

    • Si une requête contient un en-tête Range: bytes=x-y, analysez-le pour déterminer le plage demandée.
    • Ouvrez le fichier, recherchez le décalage demandé et lisez la longueur de données demandée.
  3. Définissez les en-têtes de contenu partiel :

    • Si la demande concerne un contenu partiel (l'en-tête Range est présent), définissez les paramètres suivants en-têtes :

      • HTTP/1.1 206 Contenu partiel
      • Content-Range : octets x-y/filesize
  4. Envoyer le fichier data :

    • Sortez les données demandées à l'aide de print() ou similaire.

Voici un exemple de code PHP qui montre comment implémenter téléchargements de contenu partiel :

$filesize = filesize($file);

$offset = 0;
$length = $filesize;

if (isset($_SERVER['HTTP_RANGE'])) {
    preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches);

    $offset = intval($matches[1]);
    $length = intval($matches[2]) - $offset;
}

$file = fopen($file, 'r');

fseek($file, $offset);

$data = fread($file, $length);

fclose($file);

if ($offset > 0) {
    header('HTTP/1.1 206 Partial Content');
    header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);
}

header('Content-Type: ' . $ctype);
header('Content-Length: ' . $length);
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Accept-Ranges: bytes');

print($data);
Copier après la connexion

Ce code définit les en-têtes appropriés et répond avec les données de fichier demandées, prenant en charge la reprise téléchargements.

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