Un modo alternativo per hide il link per il download

Attualmente sto usando questo codice per hide il link per il download, ma il suo download è incompleto per alcuni utenti. Non so perché, ma troppi utenti mi segnalano questo problema. Il mio codice attuale è:

file = "../".$realFileName; $fakeFileName= 'Upbaz.ir-'.base64_decode($_GET['ffname']); $fp = fopen($file, 'rb'); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=$fakeFileName"); header("Content-Length: " . filesize($file)); fpassthru($fp); 

Qualcuno sa l’altro modo per hide il link per il download?

Questo script gestirà il download del file e include un buffer / diversi tipi di estensioni (se lo desideri). Un buon modo per hide i collegamenti consiste nel mettere i file in una directory protetta e avere i collegamenti memorizzati in un database. L’utente vede un ID o una sessione legati a un file e il server trova il file e lo serve.

 if ($fd = fopen ($fullPath, "r")) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); switch ($ext) { case "txt": header("Content-type: application/txt"); // add here more headers for diff. extensions header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download break; default: header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); } header("Content-length: $fsize"); header("Cache-control: private"); //use this to open files directly while(!feof($fd)) { $buffer = fread($fd, 2048); echo $buffer; } } fclose ($fd); 

.htaccess per proteggere la directory (dovresti avere una dir solo per questi file

 deny from all 

Sopra lo script modificato per il tuo:

 $file = "../".$realFileName; $fakeFileName= 'Upbaz.ir-'.base64_decode($_GET['ffname']); if ($fd = fopen ($file, "r")) { $fsize = filesize($file); header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=\"$fakename\""); header("Content-length: $fsize"); header("Cache-control: private"); //use this to open files directly while(!feof($fd)) { $buffer = fread($fd, 2048); echo $buffer; } } fclose ($fd); 

Aumentare il tempo di esecuzione dello script eq

 @set_time_limit(120);