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 confrontés à 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3