Обычно, когда я хочу разрешить пользователю загружать файл без указания точного местоположения, я просто использую что-то вроде этого, чтобы позволить ему загрузить файл:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . $filename) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename));
readfile("$filename");
Но если они используют современный браузер или другой клиент загрузки, и они приостанавливают загрузку и пытаются возобновить ее, сценарий (при условии, что они все еще аутентифицированы или что-то еще) повторно отправит заголовки и содержимое файла с самого начала, тем самым прервав загрузку, и, по сути, требуя повторной загрузки файла с самого начала.
Как мне разрешить моему сценарию компенсировать приостановленные (и, соответственно, возобновленные) загрузки?