Maison >développement back-end >tutoriel php >Comment puis-je activer la reprise des téléchargements dans mon script de transfert de fichiers PHP ?
Lors du transfert de fichiers à l'aide de scripts PHP à des fins de sécurité, le chemin absolu des fichiers téléchargeables doit souvent être dissimulé. Cependant, les scripts de transfert de fichiers PHP traditionnels peuvent ne pas prendre en charge les téléchargements avec reprise, ce qui entraîne des désagréments pour les utilisateurs finaux qui subissent des interruptions de connexion.
Pour activer les téléchargements avec reprise, les étapes suivantes peuvent être pris :
Vous trouverez ci-dessous un exemple d'implémentation de ces principes en PHP :
$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: ' . $filesize); header('Content-Disposition: attachment; filename="' . $fileName . '"'); header('Accept-Ranges: bytes'); print($data);
Ce script vérifie d'abord si une demande de contenu partielle a été effectuée. Si tel est le cas, il analyse la plage à partir de l'en-tête Range, recherche le décalage approprié dans le fichier et envoie la plage d'octets demandée. Le script définit également l'en-tête Accept-Ranges sur octets et envoie le code d'état HTTP approprié pour le contenu partiel si nécessaire.
En mettant en œuvre ces mesures, les téléchargements pouvant être repris peuvent être pris en charge à l'aide de scripts de transfert de fichiers PHP, offrant ainsi une solution robuste. pour les transferts de fichiers qui peuvent reprendre après des interruptions.
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!