При передаче файлов с использованием сценариев PHP в целях безопасности указывается абсолютный путь к загружаемым файлам часто приходится скрывать. Однако традиционные PHP-скрипты передачи файлов могут не поддерживать возобновляемую загрузку, что доставляет неудобства конечным пользователям, испытывающим прерывания соединения.
Чтобы включить возобновляемую загрузку, можно выполнить следующие действия: принято:
Ниже приведен пример реализации этих принципов в 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);
Этот скрипт сначала проверяет, был ли сделан частичный запрос контента. Если это так, он анализирует диапазон из заголовка Range, ищет соответствующее смещение в файле и отправляет запрошенный диапазон байтов. Сценарий также устанавливает заголовок Accept-Ranges в байтах и при необходимости отправляет соответствующий код состояния HTTP для частичного содержимого.
Благодаря реализации этих мер можно поддерживать возобновляемые загрузки с использованием сценариев передачи файлов PHP, обеспечивая надежное решение. для передачи файлов, которая может возобновиться после прерываний.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3