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 :
Envoyer les plages d'acceptation : octets en-tête :
Gérer les en-têtes de plage :
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 :
Envoyer le fichier data :
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);
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!