Normalmente, quando voglio per consentire a un utente di scaricare un file senza rivelare la posizione esatta, mi basta usare qualcosa di simile per far loro scaricare il file:Come posso consentire a un download di mettere in pausa/riprendere?
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");
Ma se stanno usando un browser moderno o altri client di download, interrompono il download e provano a riprenderlo, lo script (supponendo che siano ancora autenticati o altro) rimanderà le intestazioni e il contenuto del file fin dall'inizio, interrompendo così il download e in pratica richiedendo che il file sia riscaricato dall'inizio.
Come posso abilitare il mio script a compensare i download in pausa (e conseguentemente, ripresi)?
Avete veramente bisogno di questa funzionalità? I tuoi download protetti vengono dai caricamenti degli utenti? In tal caso, qual è il tuo limite per le dimensioni del caricamento? Se il suo 50 MB o meno, direi che è ok per non avere questa funzionalità. Oppure, se sono tutti i file generati e la dimensione media è ugualmente piccola, probabilmente non è necessaria. D'altra parte, se sono tutti file molto grandi, si potrebbe considerare di fare qualcosa come distribuirli come torrent, quindi proteggere il download del file torrent. Non è sicuro come gli utenti possono quindi condividere file torrent - solo qualcosa su cui riflettere. –
A partire da questo momento, sto chiedendo come solo cercare la conoscenza, non usarla in alcun progetto particolare. Ho voluto questa funzionalità nei progetti passati e probabilmente lo farò in futuro. Ho solo pensato di chiederlo mentre non ho fretta di trovare la risposta. –